Python再函式實參中的什麼作用

2021-03-04 01:51:21 字數 5321 閱讀 8951

1樓:匿名使用者

word.strip(條件) 函式:刪除word字串中開頭、結尾處,符合「條件」的字元,這裡的條件是兩條相加起來,即:標點(英文)+空格。

附帶乙個小實驗,自己試一下,列印:所有數字和標點。

import string

word="    ,.中華人民共和國,."

word = word.strip(string.punctuation + string.whitespace)

print(word)

print(string.digits+string.punctuation)

輸出結果:

中華人民共和國

0123456789!"#$%&'()*+,-./:;<=>?@[\]^_`~

其它條件如下:

string.digits:數字0~9

string.letters:所有字母(大小寫)

string.lowercase:所有小寫字母

string.printable:可列印字元的字串

string.punctuation:所有標點

string.uppercase:所有大寫字母

python中函式定義裡修改實參

2樓:匿名使用者

=方式直接=相對於建立乙個本地變數,已經指向了新的位址,不是外部傳來的那個

+=方式

python中函式引數列表中使用的 冒號是幹什麼用的

3樓:pandan餃子

函式引數中的冒號是引數的型別建議

符,告訴程式設計師希望傳入的實參的型別。函式後回麵跟著的箭頭是函式答返回值的型別建議符,用來說明該函式返回的值是什麼型別。

def twosum(num1: int, num2: int=100) -> int:

sum = num1 + num2 return sum

if __name__ == "__main__": print(twosum.__annotations__) print(twosum(1,2)) print(twosum(1)) print(twosum('i love ','arsenal')) #print(twosum('arsenal'))

4樓:哥倫比亞洛西西

字典(dict)的每個襲鍵值對()用冒號bai(:)分割,每個對之間用逗號(,)分割,整個字典包括在du花括號({})中 ,格式zhi如下所示:

d =鍵必須是唯一dao的,但值則不必。值可以取任何資料型別,但鍵必須是不可變的,如字串,數字或元組。

列表(list)或序列(sequence)中的冒號與matlab用法類似,如

>>a = range(3)

>>a==a[0:3]

>>true

5樓:鄉巴佬放牛

def add(x:int,y:bool): # :int 並沒有卵用,python是動態型別,這裡寫成 y:bool 然後

專y=2並不觸發異屬常

return x+y

print(add(1,y=2)) # 3

6樓:匿名使用者

type hint,大概算是型別標記?

主要是為了靜態分析和重構用

然而 python 還是動態型別的,同時第三方庫的執行時型別檢查是由開發者實現的

總結一下就是並沒有什麼卵用

7樓:方冬員陽州

python函式的引數類似於c++中的形參,傳遞的只是引數的拷貝。

而函式的預設引數也會被儲存為乙個變數,並且是全域性靜態變數。

python怎麼向類中的函式傳遞引數

8樓:逆風笑

我再補充一下:直接寫個例子,看註釋就能明白class person:

#有時寫作person(object):

#表示繼承object中的一些方法(如__init__等)#在python3中沒區別,已經預設繼承了def __init__(self, init_name):

self.name = init_namedef greet(self):

print('hi, my name is %s' %self.name)

p1 = person('david')

#這個david傳參比較特殊,因為是傳給init初始化方法,所以可以直接寫在類後面

#一般我們需要給類中定義的方法或屬性賦值的時候,用的是.訪問,而不在建立類物件時傳參

p1.greet()

9樓:育知同創教育

python中函式引數的傳遞是通過「賦值」來傳遞的。但這條規則只回答了函式引數傳遞的「戰略問題」,並沒有回答「戰術問題」,也就說沒有回答怎麼賦值的問題。函式引數的使用可以分為兩個方面,一是函式引數如何定義,二是函式在呼叫時的引數如何解析的。

而後者又是由前者決定的。函式引數的定義有四種形式:

1. f(arg1,arg2,...)

2. f(arg2=,arg3=...)

3. f(*arg1)

4. f(**arg1)

第1 種方式是最「傳統」的方式:乙個函式可以定義不限個數引數,引數(形式引數)放在跟在函式名後面的小括號中,各個引數之間以逗號隔開。用這種方式定義的函式在呼叫的時候也必須在函式名後的小括號中提供相等個數的值(實際引數),不能多也不能少,而且順序還必須相同。

也就是說形參和實參的個數必須一致,而且想給形參1的值必須是實參中的第一位,形參與實參之間是一一對應的關係,即「形參1=實參1 形參2=實參2...」。很明顯這是一種非常不靈活的形式。

比如:"def addon(x,y): return x + y",這裡定義的函式addon,可以用addon(1,2)的形式呼叫,意味著形參x將取值1,主將取值2。

addon(1,2,3)和addon (1)都是錯誤的形式。

第2種方式比第1種方式,在定義的時候已經給各個形參定義了預設值。因此,在呼叫這種函式時,如果沒有給對應的形式引數傳遞實參,那麼這個形參就將使用預設值。比如:

「def addon(x=3,y=5): return x + y」,那麼addon(6,5)的呼叫形式表示形參x取值6,y取值5。此外,addon(7)這個形式也是可以的,表示形參x取值7,y取預設值5。

這時候會出現乙個問題,如果想讓x取預設值,用實參給y賦值怎麼辦?前面兩種呼叫形式明顯就不行了,這時就要用到python中函式呼叫方法的另一大絕招 ──關健字賦值法。可以用addon(y=6),這時表示x取預設值3,而y取值6。

這種方式通過指定形式引數可以實現可以對形式引數進行「精確攻擊」,乙個副帶的功能是可以不必遵守形式引數的前後順序,比如:addon(y=4,x=6),這也是可以的。這種通過形式引數進行定點賦值的方式對於用第1種方式定義的函式也是適用的。

上面兩種方式定義的形式引數的個數都是固定的,比如定義函式的時候如果定義了5個形參,那麼在呼叫的時候最多也只能給它傳遞5個實參。但是在實際程式設計中並不能總是確定乙個函式會有多少個引數。第3種方式就是用來應對這種情況的。

它以乙個*加上形參名的方式表示,這個函式實際引數是不一定的,可以是零個,也可以是n個。不管是多少個,在函式內部都被存放在以形參名為識別符號的tuple中。比如:

對這個函式的呼叫addon() addon(2) addon(3,4,5,6)等等都是可以的。

與第3種方式類似,形參名前面加了兩個*表示,引數在函式內部將被存放在以形式名為識別符號的dictionary中。這時候呼叫函式必須採用key1=value1、key2=value2...的形式。

比如:1. def addon(**arg):

2. sum = 0

3. if len(arg) == 0: return 0

4. else:

5. for x in arg.itervalues():

6. sum += x

7. return sum

那麼對這個函式的呼叫可以用addon()或諸如addon(x=4,y=5,k=6)等的方式呼叫。

上面說了四種函式形式定義的方式以及他們的呼叫方式,是分開說的,其實這四種方式可以組合在一起形成複雜多樣的形參定義形式。在定義或呼叫這種函式時,要遵循以下規則:

1. arg=必須在arg後

2. *arg必須在arg=後

3. **arg必須在*arg後

在函式呼叫過程中,形參賦值的過程是這樣的:

首先按順序把「arg」這種形式的實參給對應的形參

第二,把「arg=」這種形式的實參賦值給形式

第三,把多出來的「arg」這種形式的實參組成乙個tuple給帶乙個星號的形參

第四,把多出來的「key=value」這種形式的實參轉為乙個dictionary給帶兩個星號的形參。

例子:1. def test(x,y=5,*a,**b):

2. print x,y,a,b

就這麼乙個簡單函式,來看看下面對這個函式呼叫會產生什麼結果:

test(1) ===> 1 5 () {}

test(1,2) ===> 1 2 () {}

test(1,2,3) ===> 1 2 (3,) {}

test(1,2,3,4) ===> 1 2 (3,4)

test(x=1) ===> 1 5 () {}

test(x=1,y=1) ===> 1 1 () {}

test(x=1,y=1,a=1) ===> 1 1 ()

test(x=1,y=1,a=1,b=1) ===> 1 1 ()

test(1,y=1) ===> 1 1 () {}

test(1,2,y=1) ===> 出錯,說y給賦了多個值

test(1,2,3,4,a=1) ===> 1 2 (3,4)

test(1,2,3,4,k=1,t=2,o=3) ===> 1 2 (3,4)

10樓:匿名使用者

class a:

def a(self, d):

print(d)

d =a = a()

a.a(d)

python如何讓使用者直接輸入作為實參儲存到函式裡

11樓:heart浩皛

形參就是函式入口的引數,函式入口引數傳遞只有傳值與傳值兩種區別。傳值在python裡就是以對專象,比如數屬組或者是類來傳遞。至於實參,我印象中是傳遞常量吧。

如果不是這樣,應該沒有實參的說法。是某些老師為了忽悠,編造出來的概念遊戲。簡單變數應該是指相對物件來講的。

在python裡,只有物件與基本變數型別。簡單變數的說法在python裡似乎也沒有意義。所以,忘記簡單變數與實參這樣的說法。

python定義函式,在python中定義函式

params 就是 5,5 5,2 就是2個5的元組,乘號可以理解成相加。30就是30個 的字串 params作為引數,前面的 號就是把params元組分解成元素的意思,這樣就分開成為2個引數了。實際上傳遞給了x,y 於是就執行了power 5,5 在python中定義函式 涉及到狀態儲存,可以使用...

請問下python中的工廠函式和內建函式他們兩個

定義不同啊。內建函式應該是不需要import就可以使用的函式。工廠不是個函式,是個類。工廠類這要從 設計模式 說起,工廠模式。但是用起來,至少在python中,工廠模式的函式或者是類,與原來的用法沒有什麼區別。只是對於程式設計師來說,擴充套件更容易些。目前就沒有感覺差別。這些 基本 內建 之類的名詞...

關於Python中sort函式賦值的問題

python中的sort 方法用於陣列排序,本文以例項形式對此加以詳細說明 一 基本形式 列表有自己的sort方法,其對列表進行原址排序,既然是原址排序,那顯然元組不可能擁有這種方法,因為元組是不可修改的。123x 4,6,2,1,7,9 x.sort print x 1,2,4,6,7,9 如果需...