

每天堅持 一天一篇 點個訂閱吧 灰常感謝 當個死粉也闊以
Python人工智能從入門到精通
“\n”Linux 換行符
"\r\n" Windows換行符
函數的參數傳遞:
傳參方式:(2種)
位置傳參(包含關系 )
序列傳參
關鍵字傳參(包含關系)
字典關鍵字傳參
位置傳參:
實際參數(實參)的對應關系與形式參數(形參) 的對應關系是安位置來依次對應的
說明:
實參和形參通過位置進行傳遞和匹配
實參的個數必須與形參的個數相同
序列傳參:
序列傳參是指在函數調用過程中,用 * 將序列拆解 后按照位置進行傳遞的方式
說明:
序列傳參時,序列拆解的位置與形參一一對應
序列的位置信息對應相應的形參的位置
關鍵字傳參:
關鍵字傳參是指傳參時,按着形參的名稱給形參賦值、實參和形參按形參名進行匹配
字典關鍵字傳參:
是指字典,將字典用“**”拆解后再進行關鍵字傳參的方式
說明:
字典的鍵名必須和形參名一致
字典的鍵名必須是字符串且標識符
字典額鍵名要在形參中存在
綜合傳參:
函數的傳參方式在能確定形參能唯一匹配到相應實參的情況下可以任意組合
說明:
位置傳參(序列傳參)一定要在關鍵字傳參(字典關鍵字傳參)的左側
示例:
def fu(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})
--------------------函數的形參定義--------------------
函數的缺省參數:
語法:
def 函數名 (形參名1=默認實參1, 形參2=默認實參2)
語句塊
說明:
缺省參數必須從右至左依次存在的,如果一個參數有缺省參數,
則右側的所有參數都必須有缺省參數
函數的形參定義:
1.位置形參
2.星號元組形參
3.命名關鍵字形參
4.雙星號字典形參
位置形參:
語法:
def 函數名(形參1, 形參2.......)
語句塊
元組形參:
語法:
def 函數名(*元組形參名):
語句塊
作用:
收集多余的位置傳參
命名關鍵字形參:
語法:
def 函數名(*, 命名關鍵字形參):
語句塊
或
def 函數名(*args, 命名關鍵字形參):
語句塊
(關鍵字形參 必須用關鍵字傳參)
作用:
強制所有的參數都參數都必須用關鍵字傳參或字典關鍵字傳參
雙星號字典傳參:
語法:
def 函數名(**字典形參名):
語句塊
作用:
收集多余關鍵字傳參
字典形參名通常命名為:kwargs
函數的參數說明:
位置形參、星號元組形參、命名關鍵字形參、雙星號字典形參可以混合使用
函數自左到右的順序為:
1.位置形參
2.星號元組形參
3.命名關鍵字形參
4.雙星號字典形參
例如:
def fx(a, b, *args, c, **kwargs):
pass
fx(100, 200, 300, 400, c="c", d="d")
函數的不定長參數:
星號元組形參,雙星號字典形參
說明:
可以接收任意位置傳參和關鍵字傳參
例如:
def fn(*args, **kwargs)
pass
全局變量和局部變量:
局部變量:local variable
1.定義函數內的變量成為局部變量(函數的形參也是局部變量)
2.局部變量只能在函數內部使用
3.局部變量在函數調用時才能夠被創建,在函數調用之后被銷毀
全局變量:global variable
定義在函數外,模塊內的變量稱為全局變量
全局變量所有函數都可以直接訪問(但函數內不能將其直接賦值)
練習:
1.寫一個函數minmax(a, b, c) 有三個參數,這回這三個參數中的最小值和最大值,
要求,形成元組,最小值在前,最大值在后,如:
def minmax(a, b, c):
...
t = minmax(11, 33, 22)
print(t) # (11, 33) # <<< 打印元組
xiao, da = minmax(6, 5, 4)
print('最小值:', xiao, '最大值:', da)
答案:
def minmax(a, b, c): x = a if x > b: x = b if x > c: x = c z = a if z < b: z = b if z < c: z = c L = [x, z] print(L) minmax(2, 1, 3)
方法二:
def minmax(a, b, c): L = [min(a, b, c), max(a, b, c)] print(L) minmax(2, 3, 1)
其實方法二 這樣也是可以的不過就是有點不厚道了 這不屬於二道販子嘛
2.寫一個函數 myadd, 此函數可以計算兩個數的和,也可以計算三個數的和
def myadd(......):
....
print(myadd(10, 20)) # 30
print(myadd(100, 200, 300)) # 600
答案:
def myadd(a, b, c=0): return a + b + c print(myadd(100, 200, 300)) print(myadd(100, 200))
def mysum(*args): return sum(args)
皮一下很開心 mysum = sum
3 . 寫一個函數,print_odd, 此函數可以傳遞一個實參,也可以傳遞兩個實參,當傳遞一個實參時代表結束值
當傳遞兩個實參時,第一個實參代表起始值,第二個實參代表結束值
打印出以此區間內的全部奇數,不包含結束數:
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 = 0 for x in range(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. 寫一個函數, mysum可以傳入任意個實參的數字,返回所有實參的和
def mysum(*args):
...
print(mysum(1, 2, 3, 4)) # 10
print(mysum(10, 20, 30)) # 60
答案:
def mysum(*args): i = 0 for x in args: i += x return i print(mysum(1, 2, 3, 4)) # 10 print(mysum(10, 20, 30)) # 60
6. 創建一個全局變量 L = []
寫一個函數:
def input_number():
....
此函數每次調用將從鍵盤讀入一些數字追加到列表L中
如:
L = []
def input_number():
....
input_number()
print(L) # [ .... 這些是您從鍵盤輸入的數..]
L = [] def input_number(): while True: a = int(input("please input (-1 over):")) if a < 0: break L.append(a) return L L = input_number() print(L) # [ .... 這些是您從鍵盤輸入的數..]
7. 寫一個函數isprime(x) 判斷x是否為素數。如果是素數,返回True,否則返回False
答案:
def isprime(x): if x > 2: for i in range(2, x): if x % i == 0: s = False break else: s = True else: if 1 < x < 3: s = True else: s = False return s x = isprime(4) print(x)
8. 寫一個函數prime_m2n(m, n) 返回從m開始,到n結束(不包含n)范圍內的素數,返回這些素數的列表並打印
如:
L = prime_m2n(5, 10)
print(L) [5, 7]
答案:
def prime_m2n(m, n): L = [] for x in range(m, n): if isprime(x) == True: L.append(x) return L L = prime_m2n(5, 10) print(L)
9. 寫一個函數pimes(n) 返回小於n的全部素數的列表,並打印這些素數
如:
L = primes(10)
print(L) # [2, 3, 5, 7]
1) 打印100 以內的全部素數
2) 打印200 以內的全部素數的和
答案:
def pinmes(n): return prime_m2n(1, n) L = pinmes(10) print(L) # [2, 3, 5, 7] print(pinmes(100)) print(sum(pinmes(200)))
10. 編寫函數 fn(n) 此函數返回下列級數的和:
fn(n) = 1/(1*2) + 1/(2*3) + ....
+ 1/(n*(n-1)) 的和
print(fn(100))
答案:
def fn(n): s = 0 for i in range(1, n): s += 1 / (i * (i + 1)) return s print(fn(100))
一波經驗加成buff: (咳咳 C波牛B)
開局 一人 一電腦 ,一鍵盤999999999999999級
你肯會迷茫 暈眩 摸不着頭尾 沒關系 給你加個經驗值BUFF
因為很多專業術語比較抽象 再加上翻譯差別 所以說很多人都是知道專業術語該怎么說
叫什么 一般容易記住和記憶最久的應該就是用自己的方式去跟現實或者一些列子對比
越白話文越好記 什么花里胡哨的術語 知道是什么就行了 (能記還是要記得 說也盡量說
只是在你腦子里是一個對應的實例關系 就好比 變量 在內存中.......跑題了 溜了 溜了)
實參、傳參、形參是什么 ?
實參就是調用函數時的參數
傳參就是把形參傳給實參的過程
形參就是定義(封裝)函數時的參數
字典關鍵字傳參就是把字典先用(**)拆開分成形參和實參
鍵代表關鍵字(形參、不可變)
值代表參數(實參、可變)
一個鍵對應一個值 一個關鍵字對應一個參數
列表、元組 都是屬於順序傳參 先用(*)拆分后傳參
關鍵字傳參必須有關鍵字(形參)和參數(實參)
傳參的排序規則:
從左到右 1.位置形參 2.星號元組形參 3.命名關鍵字形參 4.雙星號字典形參
變量沒什么可說的 就相當於一個公共電話(全局)和私人手機(局部)
所有人都可以用公共電話 你的私人手機你會讓所有人用嗎?我想不會吧