一、函式引數
1.必須引數
必需引數須以正確的順序傳入函式。呼叫時的數量必須和宣告時的一樣。
呼叫printme()函式,你必須傳入乙個引數,不然會出現語法錯誤:
小括號內的就是引數
小括號內沒東西叫做無參,有叫有參
求任意三個數之和
在定義函式的時候小括號內寫的是變數名字,不需要賦值
在呼叫函式的時候小括號內的是給變數賦的值
定義函式的時候小括號中的變數叫做形參
呼叫函式的時候小括號的值叫實參
形參:形式引數,變數
實參:實際引數,值
實參給形參賦值
'''2.關鍵字引數
關鍵字引數和函式呼叫關係緊密,函式呼叫使用關鍵字引數來確定傳入的引數值。
使用關鍵字引數允許函式呼叫時引數的順序與宣告時不一致,因為 python 直譯器能夠用引數名匹配引數值。
'''# #以下例項在函式 printme() 呼叫時使用引數名:
# def printme(str):
# print(str)
# printme(str="姜新科")
# #以下例項中演示了函式引數的使用不需要使用指定順序:
# def printinfo(name, age):
# print("名字: ", name)
# print("年齡: ", age)
# printinfo(age=18, name="姜新科")
3.預設引數
預設引數就是在定義函式引數的時候給變數乙個初值
預設引數必須放在最後
呼叫函式時,如果沒有傳遞引數,則會使用預設引數。
以下例項中如果沒有傳入 age 引數,則使用預設值:
'''# def printinfo(name, age=20):
# "列印任何傳入的字串"
# print("名字: ", name)
# print("年齡: ", age)
## printinfo(age=18, name="姜新科")
# print("------------------------")
# printinfo(name="姜新科")
4.不定長引數:必須放在後邊
你可能需要乙個函式能處理比當初宣告時更多的引數。
這些引數叫做不定長引數,和上述 2 種引數不同,宣告時不會命名。基本語法如下:
'''#加了星號 * 的引數會以元組(tuple)的形式匯入,存放所有未命名的變數引數。
# def printinfo(arg1, *vartuple):
# print(arg1)
# print(vartuple)
# printinfo(10)
# printinfo(70, 60, 50)
#4.1練習
def jj(a,*b):
ji=a
for i in b:
ji*=i
print(ji)
jj(1,2,3,4,5,6)
# #如果在函式呼叫時沒有指定引數,它就是乙個空元組。我們也可以不向函式傳遞未命名的變數。如下例項:
## def printinfo(arg1, *vartuple):
# print('a',arg1)
# for var in vartuple:
# print(var)
# printinfo(10)
# printinfo(70, 60, 50)
## #加了兩個星號 ** 的引數會以字典的形式匯入。
# def printinfo(arg1, **dict):
# print(arg1)
# print(dict)
# printinfo(1, a=2, b=3)
#宣告函式時,引數中星號 * 可以單獨出現,如果單獨出現星號 * 後的引數必須用關鍵字傳入
# def printinfo(a,*,b,c):
# return a+b+c
# # printinfo(1,2,3)#報錯
# print(printinfo(1,b=2,c=3)) # 正常
4.2#不定長引數一般寫法
def fun3(*args,**kwargs):
print(args)
print(kwargs)
fun3(1,2,3,x=1,y=2)
二、變數作用域
'''
變數作用域
python 中,程式的變數並不是在哪個位置都可以訪問的,訪問許可權決定於這個變數是在**賦值的。
變數的作用域決定了在哪一部分程式可以訪問哪個特定的變數名稱。python的作用域一共有4種,分別是:
l (local) 區域性作用域
e (enclosing) 閉包函式外的函式中
g (global) 全域性作用域
b (built-in) 內建作用域
以 l –> e –> g –>b 的規則查詢,即:在區域性找不到,便會去區域性外的區域性找(例如閉包),再找不到就會去全域性找,再者去內建中找。
''''''
全域性變數和區域性變數
定義在函式內部的變數擁有乙個區域性作用域,定義在函式外的擁有全域性作用域。
區域性變數只能在其被宣告的函式內部訪問,而全域性變數可以在整個程式範圍內訪問。
呼叫函式時,所有在函式內宣告的變數名稱都將被加入到作用域中。如下例項:
'''# total = 0 # 這是乙個全域性變數
# def sum(arg1, arg2):
# # global total 加上這句話就能在函式內呼叫全域性變數了
# total = arg1 + arg2 # total在這裡是區域性變數.
# print("函式內是區域性變數 : ", total)
# return total
## sum(10, 20)
# print("函式外是全域性變數 : ", total)
'''global 和 nonlocal關鍵字
當內部作用域想修改外部作用域的變數時,就要用到global和nonlocal關鍵字了。
'''# num = 1
# def fun():
# global num # 需要使用 global 關鍵字宣告
# print(num)
# num = 123
# print(num)
# fun()
# print(num)
#如果要修改巢狀作用域中的變數則需要 nonlocal 關鍵字了,如下例項:
# def outer():
# num = 10
# def inner():
# nonlocal num # nonlocal關鍵字宣告
# num = 100
# print(num)
# inner()
# print(num)
# outer()
a=10
def test(a):
a = a + 1
print(a)
test(a)
函式引數,作用域
def foo x,y,args,a 1,b,kwargs print x,y print args print a print b print kwargs foo 1,2,3,4,5,b 8,c 4,d 5 1 2 3,4,5 18 後定義的引數,必須被傳值 有預設值的除外 且必須按照關鍵字實參...
Python函式詳解一(函式引數 變數作用域)
函式是python程式的重要組成部分。所謂函式就是實現某一特定功能的 段,可重複使用,提高了 的利用率。python除了可以直接使用內建函式,還支援自定義函式。使用def關鍵字,格式如下 def函式名 引數列表 函式體函式的返回值 函式的返回值用return語句返回,函式體內部的語句在執行時,一旦執...
Python函式引數傳遞以及變數作用域
使用 號,表示函式接受多個引數 def f args print args f 1 1,f 1,2,3 1,2,3 f f 1,2 1,2 使用 號,表示傳遞的是字典引數 def f1 args print args f1 a 1,b 2 3.將函式名作為引數傳遞 coding utf 8 用來支援...