真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python中的參數(shù)函數(shù) python帶參數(shù)的函數(shù)

Python函數(shù)的參數(shù)類型

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

目前創(chuàng)新互聯(lián)公司已為近1000家的企業(yè)提供了網(wǎng)站建設、域名、虛擬空間、網(wǎng)站托管維護、企業(yè)網(wǎng)站設計、渝北網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

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

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

執(zhí)行結果:

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

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

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

輸出:

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

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

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

來看下面的例子:

python3.8運行:

不能使用關鍵字參數(shù)形式賦值了。

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

執(zhí)行結果:

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

執(zhí)行結果:

上面介紹的參數(shù)可以混合使用:

結果:

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

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

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

執(zhí)行結果:

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

執(zhí)行結果:

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

先來看個例子:

執(zhí)行結果:

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

接著看下面的例子:

結果:

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

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

結果:

下面的代碼執(zhí)行結果又是什么呢?

執(zhí)行結果:

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

可以使用下面的方式:

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

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

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

參考文檔:

--THE END--

Python的函數(shù)參數(shù)總結

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

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ù)和參數(shù)

parameter 是函數(shù)定義的參數(shù)形式

argument 是函數(shù)調(diào)用時傳入的參數(shù)實體。

對于函數(shù)調(diào)用的傳參模式,一般有兩種:

此外,

也是關鍵字傳參

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

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

既可以用關鍵字又可以用位置調(diào)用

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

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

網(wǎng)絡模塊request的request方法的設計

多數(shù)的可選參數(shù)被設計成可變關鍵字參數(shù)

有多種方法能夠為函數(shù)定義輸出:

非常晦澀

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

例子1:

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

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

例子2:

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

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

例子1中,連續(xù)調(diào)用addItem('world') 的結果會是

而不是期望的


新聞名稱:python中的參數(shù)函數(shù) python帶參數(shù)的函數(shù)
轉載源于:http://weahome.cn/article/doooped.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部