老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

python將函數參數 python函數的5種參數詳解

Python函數的參數類型

Python函數的參數類型主要包括必選參數、可選參數、可變參數、位置參數和關鍵字參數,本文介紹一下他們的定義以及可變數據類型參數傳遞需要注意的地方。

網站的建設創新互聯公司專注網站定制,經驗豐富,不做模板,主營網站定制開發.小程序定制開發,H5頁面制作!給你煥然一新的設計體驗!已為成都宣傳片制作等企業提供專業服務。

必選參數(Required arguments)是必須輸入的參數,比如下面的代碼,必須輸入2個參數,否則就會報錯:

其實上面例子中的參數 num1和num2也屬于關鍵字參數,比如可以通過如下方式調用:

執行結果:

可選參數(Optional arguments)可以不用傳入函數,有一個默認值,如果沒有傳入會使用默認值,不會報錯。

位置參數(positional arguments)根據其在函數定義中的位置調用,下面是pow()函數的幫助信息:

x,y,z三個參數的的順序是固定的,并且不能使用關鍵字:

輸出:

在上面的pow()函數幫助信息中可以看到位置參數后面加了一個反斜杠 / ,這是python內置函數的語法定義,Python開發人員不能在python3.8版本之前的代碼中使用此語法。但python3.0到3.7版本可以使用如下方式定義位置參數:

星號前面的參數為位置參數或者關鍵字參數,星號后面是強制關鍵字參數,具體介紹見強制關鍵字參數。

python3.8版本引入了強制位置參數(Positional-Only Parameters),也就是我們可以使用反斜杠 / 語法來定義位置參數了,可以寫成如下形式:

來看下面的例子:

python3.8運行:

不能使用關鍵字參數形式賦值了。

可變參數 (varargs argument) 就是傳入的參數個數是可變的,可以是0-n個,使用星號( * )將輸入參數自動組裝為一個元組(tuple):

執行結果:

關鍵字參數(keyword argument)允許將任意個含參數名的參數導入到python函數中,使用雙星號( ** ),在函數內部自動組裝為一個字典。

執行結果:

上面介紹的參數可以混合使用:

結果:

注意:由于傳入的參數個數不定,所以當與普通參數一同使用時,必須把帶星號的參數放在最后。

強制關鍵字參數(Keyword-Only Arguments)是python3引入的特性,可參考:。 使用一個星號隔開:

在位置參數一節介紹過星號前面的參數可以是位置參數和關鍵字參數。星號后面的參數都是強制關鍵字參數,必須以指定參數名的方式傳參,如果強制關鍵字參數沒有設置默認參數,調用函數時必須傳參。

執行結果:

也可以在可變參數后面命名關鍵字參數,這樣就不需要星號分隔符了:

執行結果:

在Python對象及內存管理機制中介紹了python中的參數傳遞屬于對象的 引用傳遞 (pass by object reference),在編寫函數的時候需要特別注意。

先來看個例子:

執行結果:

l1 和 l2指向相同的地址,由于列表可變,l1改變時,l2也跟著變了。

接著看下面的例子:

結果:

l1沒有變化!為什么不是[1, 2, 3, 4]呢?

l = l + [4]表示創建一個“末尾加入元素 4“的新列表,并讓 l 指向這個新的對象,l1沒有進行任何操作,因此 l1 的值不變。如果要改變l1的值,需要加一個返回值:

結果:

下面的代碼執行結果又是什么呢?

執行結果:

和第一個例子一樣,l1 和 l2指向相同的地址,所以會一起改變。這個問題怎么解決呢?

可以使用下面的方式:

也可以使用淺拷貝或者深度拷貝,具體使用方法可參考Python對象及內存管理機制。這個問題在Python編程時需要特別注意。

本文主要介紹了python函數的幾種參數類型:必選參數、可選參數、可變參數、位置參數、強制位置參數、關鍵字參數、強制關鍵字參數,注意他們不是完全獨立的,比如必選參數、可選參數也可以是關鍵字參數,位置參數可以是必選參數或者可選參數。

另外,python中的參數傳遞屬于對象的 引用傳遞 ,在對可變數據類型進行參數傳遞時需要特別注意,如有必要,使用python的拷貝方法。

參考文檔:

--THE END--

Python的函數參數總結

import math

a = abs

print(a(-1))

n1 = 255

print(str(hex(n1)))

def my_abs(x):

# 增加了參數的檢查

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='人民大學')

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-函數可變參數類型

python中的函數,大多需要配置參數,以下是幾種函數的參數類型:

1.必備參數:以正確的順序、個數傳入函數。調用時的參數情況要和聲明時一樣。最常用的情況。

def tplink(a,b):

c=a+b+b

return c?

tplink(4,2)

2.關鍵字參數:使用關鍵字參數允許函數調用時參數的順序和聲明時不一致,因為python解析器會在調用函數時,用參數名匹配參數值。

def tplink(age1,age2):

ageall=age1+age2+age2

return ageall

tplink(age2=4,age1=2)

3.默認參數:默認某個參數的取值

def tplink(age1,age2=5):

ageall=age1+age2+age2

return ageall

tplink(age1=4)

4.不定長參數:在聲明時并不確定 調用時的參數數量。這種情況,可以用不定長參數進行解決,具體操作是在參數名前用*。

但不能和 關鍵字參數并用。一般在正常參數arg之后。

*args、**kwargs的定義:

這兩個都是python中的不定長參數,又稱為可變參數。

*args 表示任何多個無名參數,它是一個 tuple ;

**kwargs 表示關鍵字參數,它是一個dict。

同時使用 * args和 ** kwargs 時,必須 * args參數列要在 ** kwargs前。且都在arg之后。

函數在調用時,會根據順序,看是否放進 *args 或者 **kwargs中。

具體可根據實際情況使用,可以 更方便靈活的接收信息。

python-函數參數默認值的一些問題

1.在定義有默認參數的函數時,需要注意以下: 必傳參數必須在前面,默認參數在后;

備注:python為了簡化函數的調用,提供了默認參數機制,這樣在調用函數時,就可以省略最后一個參數不寫;設置何種參數為默認參數?一般來說,將參數值變化小的設置為默認參數。

2. 若參數為列表,且有默認值

2.1若調用方法時傳該參數,則沒有問題

2.2 若調用方法時不傳該參數,則有問題 ,問題是:每次調用該方法時,該參數不是創建方法時的默認值,而是多次調用被修改后的列表。

python函數調用的參數傳遞

python的函數參數傳遞是"引用傳遞(地址傳遞)"。

python中賦值語句的過程(x = 1):先申請一段內存分配給一個整型對象來存儲數據1,然后讓變量x去指向這個對象,實際上就是指向這段內存(這里有點和C語言中的指針類似)。

在Python中,會為每個層次生成一個符號表,里層能調用外層中的變量,而外層不能調用里層中的變量,并且當外層和里層有同名變量時,外層變量會被里層變量屏蔽掉。函數? 調用 ?會為函數局部變量生成一個新的符號表。

局部變量:作用于該函數內部,一旦函數執行完成,該變量就被回收。

全局變量:它是在函數外部定義的,作用域是整個文件。全局變量可以直接在函數里面應用,但是如果要在函數內部改變全局變量,必須使用global關鍵字進行聲明。

注意 :默認值在函數? 定義 ?作用域被解析

在定義函數時,就已經執行力它的局部變量

python中不可變類型是共享內存地址的:把相同的兩個不可變類型數據賦給兩個不同變量a,b,a,b在內存中的地址是一樣的。

Python的函數和參數

parameter 是函數定義的參數形式

argument 是函數調用時傳入的參數實體。

對于函數調用的傳參模式,一般有兩種:

此外,

也是關鍵字傳參

python的函數參數定義一般來說有五種: 位置和關鍵字參數混合 , 僅位置參數 , 僅關鍵字參數 , 可變位置參數 , 可變關鍵字參數 。其中僅位置參數的方式僅僅是一個概念,python語法中暫時沒有這樣的設計。

通常我們見到的函數是位置和關鍵字混合的方式。

既可以用關鍵字又可以用位置調用

這種方式的定義只能使用關鍵字傳參的模式

f(*some_list) 與 f(arg1, arg2, ...) (其中some_list = [arg1, arg2, ...])是等價的

網絡模塊request的request方法的設計

多數的可選參數被設計成可變關鍵字參數

有多種方法能夠為函數定義輸出:

非常晦澀

如果使用可變對象作為函數的默認參數,會導致默認參數在所有的函數調用中被共享。

例子1:

addItem方法的data設計了一個默認參數,使用不當會造成默認參數被共享。

python里面,函數的默認參數被存在__default__屬性中,這是一個元組類型

例子2:

在例子1中,默認參數是一個列表,它是mutable的數據類型,當它寫進 __defauts__屬性中時,函數addItem的操作并不會改變它的id,相當于 __defauts__只是保存了data的引用,對于它的內存數據并不關心,每次調用addItem,都可以修改 addItem.__defauts__中的數據,它是一個共享數據。

如果默認參數是一個imutable類型,情況將會不一樣,你無法改變默認參數第一次存入的值。

例子1中,連續調用addItem('world') 的結果會是

而不是期望的


網站欄目:python將函數參數 python函數的5種參數詳解
文章URL:http://www.xueling.net.cn/article/doooehi.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 乱人伦中文字幕成人网站在线 | 露脸国产精品自产拍在线观看 | 亚洲精品无码中文久久字幕 | 日本高清免费不卡视频 | 日韩国产欧美一区二区 | 在线高清视频免费观看视频 | 欧美视频亚洲色图 | a4yy午夜福利网在线观看 | 正在播放国产对白孕妇作爱 | 在线观看免费毛片 | 小14萝裸体洗澡视频免费网站 | 久久天天躁狠狠躁夜夜 | 色花av| 日本一级在线观看 | 免费的av网站在线观看国产精品 | 少妇小莹的yin荡生活下视频 | 亚洲青涩在线 | 亚洲国产精品国自产拍久久 | 粉色视频在线免费观看 | 男人操女人的视频网站 | 欧美日韩一级黄 | 久操精品在线 | 中文字幕人妻三级中文无码视频 | 国产亚洲欧美一区二区三区在线播放 | 国产狂喷水潮免费网站WWW | 怡红院欧美 | 国产视频91在线 | 日本成人中文字幕在线观看 | 青娱乐激情视频 | 麻豆精品一二三区 | 91社看片 | 色偷偷日本 | 伊人一级 | 神马老子影院午夜观看网站 | 成人无码a级毛片免费 | 四虎成人精品 | 中文字幕AV一区乱码 | 扒开女人两片毛茸茸黑森林 | 五十路熟妇强烈无码 | 91精品国模一区二区三区 | 国产乱码在线 |