形參的第三種:
1.動態接收位置引數,動態接收引數的時候要注意:動態引數必須在位置引數後面
def func(*food):print('
>>>
',food)
func('桃子
','蘋果
')
#>>> ('桃子', '蘋果') 這樣傳參的結果是得到乙個元組
2.動態接收關鍵字引數
在python中可以動態的位置引數,但是 * 這種情況只能接收位置引數無法接收關鍵字引數
在python中使用**來接受動態關鍵自引數,這個時候接收的是乙個dict
#python中使用**kwargs來接收動態關鍵字引數
def func(**kwargs):
print('
>>>
',kwargs)
func(a = '
桃子', b = '蘋果'
)#>>>
所以最終的順序是
位置引數 > *args > 預設值引數 >**kwargs
這四種引數可以任意的進行使用
def func(*args, **kwargs):print(args, kwargs)
func("麻花藤","⻢暈",wtf="胡辣湯")
這個樣子就可以接收所有的引數了
1. 在實參位置上給乙個序列,列表,可迭代物件前⾯加個*表示把這個序列按順序打散.
def fun(*args):(args)
lst = [1, 4, 7]
fun(lst[0], lst[1], lst[2])
fun(*lst) #
可以使用*⼀乙個列表按順序打散
s = "
臣妾做不到
"fun(*s) #
字元串也可以打散, (可迭代物件)
2. 在形參的位置上的* 表示把接收到的引數組合成乙個元組,如果是乙個字典,也可以打散.不過需要用兩個*
def func(**kwargs):print('
>>>
',kwargs)
dic =
func(**dic)
#>>>
命名空間: 用來存放名字(變數, 函式名, 類名, 引入的模組名)的
1. 全域性命名空間: 我們在py檔案中自己寫的變數, 函式.....
2. 內建命名空間: 我們python直譯器提供好的一些內建內容(print, input....)
3. 區域性命名空間: 在我們執行函式的時候.會產生乙個區域性命名空間. 放的是: 函式內部的內容(變數, 函式,類...)
命名空間可能會有無數個, 區域性命名空間而言. 相對是獨立的.一般互不干擾
a = 10deffunc():
a = 20
print(a)
func() # 20
載入順序:
1. 內建命名空間
2. 全域性命名空間
3. 區域性命名空間(函式被執⾏行行的時候)
取值順序:
1. 區域性命名空間
2. 全域性命名空間
3. 內建命名空間
作用域:
1. 全域性作用域: 內建+全域性
2. 區域性作用域: 區域性
globals() 檢視全域性作用域
locals() 檢視當前作用域
我們可以通過globals()函式來檢視全域性作用域中的內容, 也可以通過locals()來檢視區域性作用域中的變量和函式資訊
在函式中宣告函式
在內部函式中使用變數的時候, 查詢順序: 先找自己 -> 上一層 -> 上一層..全域性 -> 內建
# 函式的巢狀deffun2():
print(222)
deffun3():
print(666)
print(444)
fun3()
print(888)
print(33)
fun2()
print(555)
global: 在區域性引入全域性變數
nonlocal: 在區域性...內層函式引入外層離他最近的那個變數.
python函式實驗 Python中的函式
一 定義 1 def函式名 引數 2 3 4 函式體5 6 返回值 函式的定義主要有如下要點 def 表示函式的關鍵字 函式名 函式的名稱,日後根據函式名呼叫函式,用引號標記即可 函式體 函式中進行一系列的邏輯計算,如 傳送郵件 計算出 11,22,38,888,2 中的最大數等.引數 為函式體提供...
python中的lo函式 Python 函式
函式 內建函式 print input len type print hello world 函式 引數 定義函式 def greet name print name 早上好 return 第一行def的意思是定義 define greet是 函式名 自己取的 再搭配乙個括號和冒號,括號裡面的nam...
Python中的函式
你可以定義乙個由自己想要功能的函式,以下是簡單的規則 任何傳入引數和自變數必須放在圓括號中間。圓括號之間可以用於定義引數。函式的第一行語句可以選擇性地使用文件字串 用於存放函式說明。函式內容以冒號起始,並且縮排。return expression 結束函 數,選擇性地返回乙個值給呼叫方。不帶表示式的...