新聞中心
Python:函數(shù)的參數(shù)、混搭、開包
位置參數(shù)適合參數(shù)少的情況,當(dāng)參數(shù)較多時,位置容易存錯。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供洮南企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、html5、小程序制作等業(yè)務(wù)。10年已為洮南眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進(jìn)行中。
關(guān)鍵詞參數(shù)適合參數(shù)較多時,通過指定關(guān)鍵詞來存。
混搭時應(yīng)注意先放位置參數(shù)后放關(guān)鍵詞參數(shù),否則會出現(xiàn)語法錯誤。語法上允許混搭,但盡量不要采用。
d在*的前面,可以作為位置參數(shù),不用指定關(guān)鍵詞,*后面必須指定關(guān)鍵詞,可以混搭。
一旦設(shè)置默認(rèn)值,可以不傳它;但也可以繼續(xù)傳入,傳了多少就是多少。默認(rèn)參數(shù)需要注意,現(xiàn)房非默認(rèn)參數(shù)再放默認(rèn)參數(shù)。
當(dāng)參數(shù)是多個時,可以在變量前面加*,表示零到無窮多個位置參數(shù),傳入的參數(shù)會被合并為一個元組,若需要破開元組,只需要在元組前面加上*。注意要先固定參數(shù)再可變參數(shù)。
在變量前加**,表示可變參數(shù)是關(guān)鍵詞參數(shù),在調(diào)用時必須用鍵值對來調(diào)用。
順序必須是:必選參數(shù)、默認(rèn)參數(shù)、可變位置參數(shù)、命名關(guān)鍵字參數(shù)和可變關(guān)鍵字參數(shù)。
/ 前面一定為位置參數(shù)
文章知識點與官方知識檔案匹配,可進(jìn)一步學(xué)習(xí)相關(guān)知識!?。?/p>
Python的函數(shù)參數(shù)總結(jié)
import math
a = abs
print(a(-1))
n1 = 255
print(str(hex(n1)))
def my_abs(x):
# 增加了參數(shù)的檢查
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x = 0:
return x
else:
return -x
print(my_abs(-3))
def nop():
pass
if n1 = 255:
pass
def move(x, y, step, angle=0):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
x, y = move(100, 100, 60, math.pi / 6)
print(x, y)
tup = move(100, 100, 60, math.pi / 6)
print(tup)
print(isinstance(tup, tuple))
def quadratic(a, b, c):
k = b * b - 4 * a * c
# print(k)
# print(math.sqrt(k))
if k 0:
print('This is no result!')
return None
elif k == 0:
x1 = -(b / 2 * a)
x2 = x1
return x1, x2
else:
x1 = (-b + math.sqrt(k)) / (2 * a)
x2 = (-b - math.sqrt(k)) / (2 * a)
return x1, x2
print(quadratic(2, 3, 1))
def power(x, n=2):
s = 1
while n 0:
n = n - 1
s = s * x
return s
print(power(2))
print(power(2, 3))
def enroll(name, gender, age=8, city='BeiJing'):
print('name:', name)
print('gender:', gender)
print('age:', age)
print('city:', city)
enroll('elder', 'F')
enroll('android', 'B', 9)
enroll('pythone', '6', city='AnShan')
def add_end(L=[]):
L.append('end')
return L
print(add_end())
print(add_end())
print(add_end())
def add_end_none(L=None):
if L is None:
L = []
L.append('END')
return L
print(add_end_none())
print(add_end_none())
print(add_end_none())
def calc(*nums):
sum = 0
for n in nums:
sum = sum + n * n
return sum
print(calc(1, 2, 3))
print(calc())
l = [1, 2, 3, 4]
print(calc(*l))
def foo(x, y):
print('x is %s' % x)
print('y is %s' % y)
foo(1, 2)
foo(y=1, x=2)
def person(name, age, **kv):
print('name:', name, 'age:', age, 'other:', kv)
person('Elder', '8')
person('Android', '9', city='BeiJing', Edu='人民大學(xué)')
extra = {'city': 'Beijing', 'job': 'Engineer'}
person('Jack', 24, **extra)
def person2(name, age, *, city, job):
print(name, age, city, job)
person2('Pthon', 8, city='BeiJing', job='Android Engineer')
def person3(name, age, *other, city='BeiJing', job='Android Engineer'):
print(name, age, other, city, job)
person3('Php', 18, 'test', 1, 2, 3)
person3('Php2', 28, 'test', 1, 2, 3, city='ShangHai', job='Pyhton Engineer')
def test2(a, b, c=0, *args, key=None, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'key=', key, 'kw =', kw)
test2(1, 2, 3, 'a', 'b', 'c', key='key', other='extra')
args = (1, 2, 3, 4)
kw = {'d': 99, 'x': '#'}
test2(*args, **kw)
Python參數(shù)類型
上一期我們學(xué)習(xí)參數(shù)傳遞怎么傳遞,也了解了參數(shù)的幾種類型。
首先,我們再來回顧一下,形參和實參:
形參是在定義函數(shù)時定義的,放在函數(shù)名后面的圓括號里,可為空
實參是調(diào)用函數(shù)時為形參傳入具體的參數(shù)值
簡單總結(jié)一下,誰調(diào)用函數(shù),誰就負(fù)責(zé)傳入?yún)?shù)。
好吶,本期我們來詳細(xì)學(xué)習(xí)函數(shù)幾種參數(shù)類型,大綱如下:
python函數(shù)的參數(shù)名是無意義的,Python允許在調(diào)用函數(shù)時通過通過名字來傳入?yún)?shù)值。
位置參數(shù):按照形參位置傳入的參數(shù)
調(diào)用函數(shù)時,實參默認(rèn)按位置順序傳遞的。同時實參個數(shù)也要和形參匹配
舉一個小栗子
如果實參的個數(shù)與形參不匹配時,調(diào)用函數(shù)運(yùn)行就會報錯
Python中,形參與調(diào)用函數(shù)緊密聯(lián)系在一起的。
關(guān)鍵字參數(shù):調(diào)用函數(shù)時,使形參名稱來傳遞參數(shù),形式為“形參名=實參”
關(guān)鍵字參數(shù),又叫命名參數(shù),傳遞時無需考慮參數(shù)位置和順序
舉一個小栗子
默認(rèn)參數(shù):定義函數(shù)時,我們可以為形參提前設(shè)置具體的值。
在定義函數(shù)時,默認(rèn)參數(shù)要放到位置等其他參數(shù)后面
在調(diào)用函數(shù)時,默認(rèn)參數(shù)是可選的。如果傳入新值,則會覆蓋默認(rèn)值
舉一個小栗子
注意,默認(rèn)值不能位于位置參數(shù)前面,否則程序會報錯誤
不定長參數(shù)又名可變參數(shù)。
不定長參數(shù)指的是可變數(shù)量的參數(shù),分兩種情況:
如果不定長參數(shù)后面,可以新增參數(shù)嗎?
我們通過例子來看,會發(fā)生什么?
運(yùn)行上面的程序,Python解釋器會報錯
原因是,形參a已經(jīng)是不定長參數(shù),我們調(diào)用的test(2,3,4)傳入的三個實參,系統(tǒng)自動把它們屬于形參a的值,形參b 和形參c就等于沒有值傳入,這時候系統(tǒng)就認(rèn)為,調(diào)用函數(shù)的對象,參數(shù)沒有傳夠。
為了解決這一報錯,python引入了 強(qiáng)制命名參數(shù)
規(guī)定,調(diào)用不定參數(shù)后面有跟位置參數(shù)的函數(shù)時,傳入給位置參數(shù)時,必須要強(qiáng)制命名參進(jìn)行傳參。
逆向參數(shù)收集針對的對象傳入函數(shù)的實參
調(diào)用函數(shù)時,如果實參是元組,列表或者字典,通過在實參前面加入星號,可以自動把元素進(jìn)行隔開,然后再轉(zhuǎn)入給函數(shù)進(jìn)行處理
舉一個小栗子
本期,我們詳細(xì)學(xué)習(xí)了參數(shù)幾種類型,為后面我們學(xué)習(xí)函數(shù),打好基礎(chǔ)。
實踐是檢驗真理的過程,大家多動手練習(xí)練習(xí),會有不一樣的奇妙旅程~
好吶,以上是本期內(nèi)容,歡迎大佬們評論區(qū)指正~
Python的函數(shù)和參數(shù)
parameter 是函數(shù)定義的參數(shù)形式
argument 是函數(shù)調(diào)用時傳入的參數(shù)實體。
對于函數(shù)調(diào)用的傳參模式,一般有兩種:
此外,
也是關(guān)鍵字傳參
python的函數(shù)參數(shù)定義一般來說有五種: 位置和關(guān)鍵字參數(shù)混合 , 僅位置參數(shù) , 僅關(guān)鍵字參數(shù) , 可變位置參數(shù) , 可變關(guān)鍵字參數(shù) 。其中僅位置參數(shù)的方式僅僅是一個概念,python語法中暫時沒有這樣的設(shè)計。
通常我們見到的函數(shù)是位置和關(guān)鍵字混合的方式。
既可以用關(guān)鍵字又可以用位置調(diào)用
或
這種方式的定義只能使用關(guān)鍵字傳參的模式
f(*some_list) 與 f(arg1, arg2, ...) (其中some_list = [arg1, arg2, ...])是等價的
網(wǎng)絡(luò)模塊request的request方法的設(shè)計
多數(shù)的可選參數(shù)被設(shè)計成可變關(guān)鍵字參數(shù)
有多種方法能夠為函數(shù)定義輸出:
非常晦澀
如果使用可變對象作為函數(shù)的默認(rèn)參數(shù),會導(dǎo)致默認(rèn)參數(shù)在所有的函數(shù)調(diào)用中被共享。
例子1:
addItem方法的data設(shè)計了一個默認(rèn)參數(shù),使用不當(dāng)會造成默認(rèn)參數(shù)被共享。
python里面,函數(shù)的默認(rèn)參數(shù)被存在__default__屬性中,這是一個元組類型
例子2:
在例子1中,默認(rèn)參數(shù)是一個列表,它是mutable的數(shù)據(jù)類型,當(dāng)它寫進(jìn) __defauts__屬性中時,函數(shù)addItem的操作并不會改變它的id,相當(dāng)于 __defauts__只是保存了data的引用,對于它的內(nèi)存數(shù)據(jù)并不關(guān)心,每次調(diào)用addItem,都可以修改 addItem.__defauts__中的數(shù)據(jù),它是一個共享數(shù)據(jù)。
如果默認(rèn)參數(shù)是一個imutable類型,情況將會不一樣,你無法改變默認(rèn)參數(shù)第一次存入的值。
例子1中,連續(xù)調(diào)用addItem('world') 的結(jié)果會是
而不是期望的
簡述python函數(shù)中參數(shù)的幾種形態(tài)
在調(diào)用函數(shù)時,通常會傳遞參數(shù),函數(shù)內(nèi)部的代碼保持不變,針對 不同的參數(shù)處理不同的數(shù)據(jù)。
有位置傳參、關(guān)鍵字傳參、默認(rèn)值參數(shù)、多值參數(shù)等。
1、參數(shù)傳遞
形參和實參:
形參:定義 函數(shù)時的 參數(shù)變量
實參:調(diào)用 函數(shù)時,使用的參數(shù)變量
參數(shù)傳遞的過程,就是 把實參的引用 傳遞給 形參 ,使用實參的值來執(zhí)行函數(shù)體的過程。
在 Python 中,函數(shù)的 實參/返回值 都是是靠 引用 來傳遞來的
2、位置實參
按照參數(shù)位置,依次傳遞參數(shù),這是最普通的方式。
?
在Python語言中經(jīng)常會用到函數(shù),如果函數(shù)中需要多個參數(shù),則參數(shù)之間用什么符號?
題主你好,
自定義函數(shù)時,如果函數(shù)中有多個參數(shù),則這些參數(shù)之間使用 " 逗號 " 分隔.
我寫了個小例子,如圖:
寫在最后: 參數(shù)之間除了 " 逗號 "外, " 逗號 "后面還有空格, 這些空格不是必須的, 只是為了增加可讀性而加上的.
希望可以幫到題主, 歡迎追問
網(wǎng)站題目:Python函數(shù)參數(shù)很多 python函數(shù)最多可以有多少個參數(shù)
文章轉(zhuǎn)載:http://fisionsoft.com.cn/article/hihjcs.html