Python第二周之函數及其作用域
阿新 • • 發佈:2018-03-06
提升 返回 之間 () family 計算 col 定義 法則
# 函數
定義:
我們可以把程序中相對獨立的功能模塊抽取出來,這樣的好處是可以減少重復代碼的編寫,將來可以重復使用這些功能模塊,Python中的函數就是代表了這樣的功能模塊。
命名:
age_of_student(官方) 或 ageOfStudent(大部分人的習慣用法,又稱駝峰命名法)
調用:
import 模塊 (as 別名)
函數名(參數)
註意:二元運算符之間放空格,參數裏賦值時,等號兩邊不加空格。例如:def f(x=2)
#y = x !定義求階乘這個函數,將求階乘這個功能抽取出來,放到函數中。
def f(x): """ 求函數x的階乘 :param x: 任意正整數 :return: x的階乘 """ y = 1 for z in range(1, x + 1): y *= z return y
if __name__ == ‘__main__‘:
m = int(input(‘m = ‘))
n = int(input(‘n = ‘))
# 當需要計算階乘的時候,不用再寫循環,而是直接調用已經定義好的函數就可以了。
print(f(m) // f(n) // f(m - n))
# 函數的作用域
1.在函數外面,叫做全局變量 global variable
2.減少全局變量的使用,盡量使用局部變量。迪米特法則:不要和陌生人說話,盡量讓模塊之間不要發生聯系。
3.Python搜索一個變量的方式是從局部作用域到嵌套作用域再到全局作用域,最後到內置作用域。即 local > enclose>global>built-in(l e g b)
4.如果想改變搜索範圍,可以使用global 和nonlocal關鍵字。
a = 100
def foo(): # 函數內的局部變量,離開foo函數時無法訪問的。 local variable global a # 提升權限,變為全局變量,可以直接修改,重新定義申明的變量。 a = 200 print(a) b = ‘good‘ def bar(): nonlocal b# 非局部作用域。 b = ‘hello‘ print(b) print(a) bar() print(b) foo() print(a)
# tips
ctrl + q 當前位置查看註釋,
ctrl + lb 返回寫註釋位置查看註釋
shift + F6 重命名
# 字符串倒過來的做法:[-1::-1]
Python第二周之函數及其作用域