python函数的传递方式有哪些_Python全栈工程师(函数的传参)
ParisGabriel
感謝 大家的支持
每天堅(jiān)持 一天一篇 點(diǎn)個(gè)訂閱吧??灰常感謝? ? 當(dāng)個(gè)死粉也闊以
Python人工智能從入門到精通
“\n”Linux 換行符
"\r\n" Windows換行符
函數(shù)的參數(shù)傳遞:
傳參方式:(2種)
位置傳參(包含關(guān)系 )
序列傳參
關(guān)鍵字傳參(包含關(guān)系)
字典關(guān)鍵字傳參
位置傳參:
實(shí)際參數(shù)(實(shí)參)的對(duì)應(yīng)關(guān)系與形式參數(shù)(形參) 的對(duì)應(yīng)關(guān)系是安位置來依次對(duì)應(yīng)的
說明:
實(shí)參和形參通過位置進(jìn)行傳遞和匹配
實(shí)參的個(gè)數(shù)必須與形參的個(gè)數(shù)相同
序列傳參:
序列傳參是指在函數(shù)調(diào)用過程中,用 * 將序列拆解 后按照位置進(jìn)行傳遞的方式
說明:
序列傳參時(shí),序列拆解的位置與形參一一對(duì)應(yīng)
序列的位置信息對(duì)應(yīng)相應(yīng)的形參的位置
關(guān)鍵字傳參:
關(guān)鍵字傳參是指?jìng)鲄r(shí),按著形參的名稱給形參賦值、實(shí)參和形參按形參名進(jìn)行匹配
字典關(guān)鍵字傳參:
是指字典,將字典用“**”拆解后再進(jìn)行關(guān)鍵字傳參的方式
說明:
字典的鍵名必須和形參名一致
字典的鍵名必須是字符串且標(biāo)識(shí)符
字典額鍵名要在形參中存在
綜合傳參:
函數(shù)的傳參方式在能確定形參能唯一匹配到相應(yīng)實(shí)參的情況下可以任意組合
說明:
位置傳參(序列傳參)一定要在關(guān)鍵字傳參(字典關(guān)鍵字傳參)的左側(cè)
示例:
deffu(a, b, c):print("a=", a)print("b=", b)print("c=", c)
fu(100, *[200, 300])
fu(*[100, 200], 300)
fu(100, 200, 300)
fu(100, b=200, c=300)
fu(100, **{"c": 200, "b": 300})
--------------------函數(shù)的形參定義--------------------
函數(shù)的缺省參數(shù):
語法:
def 函數(shù)名 (形參名1=默認(rèn)實(shí)參1, 形參2=默認(rèn)實(shí)參2)
語句塊
說明:
缺省參數(shù)必須從右至左依次存在的,如果一個(gè)參數(shù)有缺省參數(shù),
則右側(cè)的所有參數(shù)都必須有缺省參數(shù)
函數(shù)的形參定義:
1.位置形參
2.星號(hào)元組形參
3.命名關(guān)鍵字形參
4.雙星號(hào)字典形參
位置形參:
語法:
def 函數(shù)名(形參1, 形參2.......)
語句塊
元組形參:
語法:
def 函數(shù)名(*元組形參名):
語句塊
作用:
收集多余的位置傳參
命名關(guān)鍵字形參:
語法:
def 函數(shù)名(*, 命名關(guān)鍵字形參):
語句塊
或
def 函數(shù)名(*args, 命名關(guān)鍵字形參):
語句塊
(關(guān)鍵字形參 必須用關(guān)鍵字傳參)
作用:
強(qiáng)制所有的參數(shù)都參數(shù)都必須用關(guān)鍵字傳參或字典關(guān)鍵字傳參
雙星號(hào)字典傳參:
語法:
def 函數(shù)名(**字典形參名):
語句塊
作用:
收集多余關(guān)鍵字傳參
字典形參名通常命名為:kwargs
函數(shù)的參數(shù)說明:
位置形參、星號(hào)元組形參、命名關(guān)鍵字形參、雙星號(hào)字典形參可以混合使用
函數(shù)自左到右的順序?yàn)?#xff1a;
1.位置形參
2.星號(hào)元組形參
3.命名關(guān)鍵字形參
4.雙星號(hào)字典形參
例如:
def fx(a, b, *args, c, **kwargs):
pass
fx(100, 200, 300, 400, c="c", d="d")
函數(shù)的不定長參數(shù):
星號(hào)元組形參,雙星號(hào)字典形參
說明:
可以接收任意位置傳參和關(guān)鍵字傳參
例如:
def fn(*args, **kwargs)
pass
全局變量和局部變量:
局部變量:local variable
1.定義函數(shù)內(nèi)的變量成為局部變量(函數(shù)的形參也是局部變量)
2.局部變量只能在函數(shù)內(nèi)部使用
3.局部變量在函數(shù)調(diào)用時(shí)才能夠被創(chuàng)建,在函數(shù)調(diào)用之后被銷毀
全局變量:global variable
定義在函數(shù)外,模塊內(nèi)的變量稱為全局變量
全局變量所有函數(shù)都可以直接訪問(但函數(shù)內(nèi)不能將其直接賦值)
練習(xí):
1.寫一個(gè)函數(shù)minmax(a, b, c) 有三個(gè)參數(shù),這回這三個(gè)參數(shù)中的最小值和最大值,
要求,形成元組,最小值在前,最大值在后,如:
def minmax(a, b, c):
...
t = minmax(11, 33, 22)
print(t) # (11, 33) # <<< 打印元組
xiao, da = minmax(6, 5, 4)
print('最小值:', xiao, '最大值:', da)
答案:
defminmax(a, b, c):
x=aif x >b:
x=bif x >c:
x=c
z=aif z
z=bif z
z=c
L=[x, z]print(L)
minmax(2, 1, 3)
方法二:
defminmax(a, b, c):
L=[min(a, b, c), max(a, b, c)]print(L)
minmax(2, 3, 1)
其實(shí)方法二 這樣也是可以的不過就是有點(diǎn)不厚道了? 這不屬于二道販子嘛
2.寫一個(gè)函數(shù) myadd, 此函數(shù)可以計(jì)算兩個(gè)數(shù)的和,也可以計(jì)算三個(gè)數(shù)的和
def myadd(......):
....
print(myadd(10, 20)) # 30
print(myadd(100, 200, 300)) # 600
答案:
def myadd(a, b, c=0):return a + b +cprint(myadd(100, 200, 300))print(myadd(100, 200))
def mysum(*args):return sum(args)
皮一下很開心? mysum = sum
3 . 寫一個(gè)函數(shù),print_odd, 此函數(shù)可以傳遞一個(gè)實(shí)參,也可以傳遞兩個(gè)實(shí)參,當(dāng)傳遞一個(gè)實(shí)參時(shí)代表結(jié)束值
當(dāng)傳遞兩個(gè)實(shí)參時(shí),第一個(gè)實(shí)參代表起始值,第二個(gè)實(shí)參代表結(jié)束值
打印出以此區(qū)間內(nèi)的全部奇數(shù),不包含結(jié)束數(shù):
print_odd(10) # 1 3 5 7 9
print_odd(11, 20) # 11 13 15 17 19
答案:
def print_odd(a, b=None):if b ==None:
b=a
a=0for x inrange(a, b):if x % 2 !=0:print(x, end=" ")
print_odd(10)#1 3 5 7 9
print_odd(11, 20)#11 13 15 17 19
4. 寫一個(gè)函數(shù), mysum可以傳入任意個(gè)實(shí)參的數(shù)字,返回所有實(shí)參的和
def mysum(*args):
...
print(mysum(1, 2, 3, 4)) # 10
print(mysum(10, 20, 30)) # 60
答案:
def mysum(*args):
i=0for x inargs:
i+=xreturniprint(mysum(1, 2, 3, 4)) #10
print(mysum(10, 20, 30)) #60
6. 創(chuàng)建一個(gè)全局變量 L = []
寫一個(gè)函數(shù):
def input_number():
....
此函數(shù)每次調(diào)用將從鍵盤讀入一些數(shù)字追加到列表L中
如:
L = []
def input_number():
....
input_number()
print(L) # [ .... 這些是您從鍵盤輸入的數(shù)..]
L =[]definput_number():whileTrue:
a= int(input("please input (-1 over):"))if a <0:breakL.append(a)returnL
L=input_number()print(L) #[ .... 這些是您從鍵盤輸入的數(shù)..]
7. 寫一個(gè)函數(shù)isprime(x) 判斷x是否為素?cái)?shù)。如果是素?cái)?shù),返回True,否則返回False
答案:
defisprime(x):if x > 2:for i in range(2, x):if x % i ==0:
s=Falsebreak
else:
s=Trueelse:if 1 < x < 3:
s=Trueelse:
s=Falsereturns
x= isprime(4)print(x)
8. 寫一個(gè)函數(shù)prime_m2n(m, n) 返回從m開始,到n結(jié)束(不包含n)范圍內(nèi)的素?cái)?shù),返回這些素?cái)?shù)的列表并打印
如:
L = prime_m2n(5, 10)
print(L) [5, 7]
答案:
defprime_m2n(m, n):
L=[]for x inrange(m, n):if isprime(x) ==True:
L.append(x)returnL
L= prime_m2n(5, 10)print(L)
9. 寫一個(gè)函數(shù)pimes(n) 返回小于n的全部素?cái)?shù)的列表,并打印這些素?cái)?shù)
如:
L = primes(10)
print(L) # [2, 3, 5, 7]
1) 打印100 以內(nèi)的全部素?cái)?shù)
2) 打印200 以內(nèi)的全部素?cái)?shù)的和
答案:
defpinmes(n):return prime_m2n(1, n)
L= pinmes(10)print(L) #[2, 3, 5, 7]
print(pinmes(100))print(sum(pinmes(200)))
10. 編寫函數(shù) fn(n) 此函數(shù)返回下列級(jí)數(shù)的和:
fn(n) = 1/(1*2) + 1/(2*3) + ....
+ 1/(n*(n-1)) 的和
print(fn(100))
答案:
deffn(n):
s=0for i in range(1, n):
s+= 1 / (i * (i + 1))returnsprint(fn(100))
一波經(jīng)驗(yàn)加成buff: (咳咳 C波牛B)
開局 一人 一電腦 ,一鍵盤999999999999999級(jí)
你肯會(huì)迷茫 暈眩 摸不著頭尾 沒關(guān)系 給你加個(gè)經(jīng)驗(yàn)值BUFF
因?yàn)楹芏鄬I(yè)術(shù)語比較抽象 再加上翻譯差別 所以說很多人都是知道專業(yè)術(shù)語該怎么說
叫什么 一般容易記住和記憶最久的應(yīng)該就是用自己的方式去跟現(xiàn)實(shí)或者一些列子對(duì)比
越白話文越好記 什么花里胡哨的術(shù)語 知道是什么就行了 (能記還是要記得 說也盡量說
只是在你腦子里是一個(gè)對(duì)應(yīng)的實(shí)例關(guān)系 就好比 變量 在內(nèi)存中.......跑題了 溜了 溜了)
實(shí)參、傳參、形參是什么 ?
實(shí)參就是調(diào)用函數(shù)時(shí)的參數(shù)
傳參就是把形參傳給實(shí)參的過程
形參就是定義(封裝)函數(shù)時(shí)的參數(shù)
字典關(guān)鍵字傳參就是把字典先用(**)拆開分成形參和實(shí)參
鍵代表關(guān)鍵字(形參、不可變)
值代表參數(shù)(實(shí)參、可變)
一個(gè)鍵對(duì)應(yīng)一個(gè)值 一個(gè)關(guān)鍵字對(duì)應(yīng)一個(gè)參數(shù)
列表、元組 都是屬于順序傳參 先用(*)拆分后傳參
關(guān)鍵字傳參必須有關(guān)鍵字(形參)和參數(shù)(實(shí)參)
傳參的排序規(guī)則:
從左到右 1.位置形參 2.星號(hào)元組形參 3.命名關(guān)鍵字形參 4.雙星號(hào)字典形參
變量沒什么可說的 就相當(dāng)于一個(gè)公共電話(全局)和私人手機(jī)(局部)
所有人都可以用公共電話 你的私人手機(jī)你會(huì)讓所有人用嗎?我想不會(huì)吧
總結(jié)
以上是生活随笔為你收集整理的python函数的传递方式有哪些_Python全栈工程师(函数的传参)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小程序实现登录流程的示例
- 下一篇: 个人理财规划的六个步骤