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

2021-03-04 02:29:24 字數 4781 閱讀 7258

1樓:周濤eric玄賧瞟

python函式的引數類似於c++中的形參,傳遞的只是引數的拷貝。 而函式的預設引數也會被儲存為一個變數,並且是全域性靜態變數。

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

2樓: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'))

3樓:哥倫比亞洛西西

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

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

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

>>a = range(3)

>>a==a[0:3]

>>true

4樓:鄉巴佬放牛

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

專y=2並不觸發異屬常

return x+y

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

5樓:匿名使用者

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

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

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

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

6樓:方冬員陽州

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

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

python中變數名後面加冒號是什麼意思?

7樓:gta小雞

這是python 3.5中引入的type annotation,是一種註解,用來提示變數的型別。

用法是var: type = value

var為要定義的變數,type為該變數期待的型別,value為賦給該變數的值。

本質上和var = value是一回事,只是加上了var的型別說明。

型別註解是一種提示,並非強制的,python直譯器不會去校驗value的型別是否真的是type。

型別註解通常用在函式引數中,向函式的呼叫者提示引數型別:

def func(arg: int)

那麼呼叫者呼叫函式func時就知道引數arg應該是一個int型別。

8樓:放n賜

變數註釋的語法:註釋變數型別,明確指出變數型別,方便幫助複雜案例中的型別推斷。

var: type = value  其實本質上就是  var = value  # type就是var期望的型別

就像上一個人回答的那樣:型別註釋只是一種提示,並非強制的,python直譯器不會去校驗value的型別是否真的是type

例如:a: str = 10  這樣是沒有錯的,python直譯器在執行時會把a當作int來操作(type(a)——int)。

      這不像是 c 語言中 int a(a必須是int型別)。

還有一些使用時的注意事項:

1、省略初始值會使變數未初始化:a: str, print(a)  —— 丟擲 nameerror 異常

2、註釋區域性變數將導致直譯器始終使其成為區域性變數:

同一函式範圍內註釋受全域性或非本地變數是不允許的。

def fun():

global a

a: str = 'python'

print(a)

fun()

# 將丟擲錯誤資訊:syntaxerror: annotated name 'a' can't be global

# 即是 註釋變數 a 不能是全域性的。

3、型別註釋還可用於在類主體和方法中註釋類和例項變數。

4、註釋的目標可以是任何有效的單個賦值目標:d = {}, d['a']: str = ''python"——輸出d為字典 ;      d = ,  d[0]:

int = 10——輸出為列表[10]

注意:帶括號的名稱也被視為表示式,而不是簡單名稱。比如:(a): int = 0

更詳細的資訊可以參考:網頁連結

python,字典作為函式引數傳遞,為什麼用等號而不是冒號,key為什麼不用引號括起來

9樓:gta小雞

這是關鍵字引數,關鍵字引數的用法就是引數變數名=引數值。變數名當然不需要引號。

如果你對函式的引數還不熟悉,可以看這一章:網頁連結

python 函式變數 引數怎麼使用

10樓:育知同創教育

剛學用python的時候,特別是看一些庫的原始碼時,經常會看到func(*args, **kwargs)這樣的函式定義,這個*和**讓人有點費解。其實只要把函式引數定義搞清楚了,就不難理解了。

先說說函式定義,我們都知道,下面的**定義了一個函式funca

def funca():

pass

顯然,函式funca沒有引數(同時啥也不幹:d)。

下面這個函式funcb就有兩個引數了,

def funcb(a, b):

print a

print b

呼叫的時候,我們需要使用函式名,加上圓括號擴起來的引數列表,比如 funcb(100, 99),執行結果是:

10099

很明顯,引數的順序和個數要和函式定義中一致,如果執行funcb(100),python會報錯的:

typeerror: funcb() takes exactly 2 arguments (1 given)

我們可以在函式定義中使用引數預設值,比如

def funcc(a, b=0):

print a

print b

在函式funcc的定義中,引數b有預設值,是一個可選引數,如果我們呼叫funcc(100),b會自動賦值為0。

ok,目前為止,我們要定義一個函式的時候,必須要預先定義這個函式需要多少個引數(或者說可以接受多少個引數)。一般情況下這是沒問題的,但是也有在定義函式的時候,不能知道引數個數的情況(想一想c語言裡的printf函式),在python裡,帶*的引數就是用來接受可變數量引數的。看一個例子

def funcd(a, b, *c):

print a

print b

print "length of c is: %d " % len(c)

print c

呼叫funcd(1, 2, 3, 4, 5, 6)結果是12

length of c is: 4

(3, 4, 5, 6)

我們看到,前面兩個引數被a、b接受了,剩下的4個引數,全部被c接受了,c在這裡是一個tuple。我們在呼叫funcd的時候,至少要傳遞2個引數,2個以上的引數,都放到c裡了,如果只有兩個引數,那麼c就是一個empty tuple。

好了,一顆星我們弄清楚了,下面輪到兩顆星。

上面的例子裡,呼叫函式的時候,傳遞的引數都是根據位置來跟函式定義裡的參數列匹配的,比如funcb(100, 99)和funcb(99, 100)的執行結果是不一樣的。在python裡,還支援一種用關鍵字引數(keyword argument)呼叫函式的辦法,也就是在呼叫函式的時候,明確指定引數值付給那個形參。比如還是上面的funcb(a, b),我們通過這兩種方式呼叫

funcb(a=100, b=99)

和funcb(b=99, a=100)

結果跟funcb(100, 99)都是一樣的,因為我們在使用關鍵字引數呼叫的時候,指定了把100賦值給a,99賦值給b。也就是說,關鍵字引數可以讓我們在呼叫函式的時候打亂引數傳遞的順序!

另外,在函式呼叫中,可以混合使用基於位置匹配的引數和關鍵字引數,前題是先給出固定位置的引數,比如

def funce(a, b, c):

print a

print b

print c

呼叫funce(100, 99, 98)和呼叫funce(100, c=98, b=99)的結果是一樣的。

好了,經過以上鋪墊,兩顆星總算可以出場了:

如果一個函式定義中的最後一個形參有 ** (雙星號)字首,所有正常形參之外的其他的關鍵字引數都將被放置在一個字典中傳遞給函式,比如:

def funcf(a, **b):

print a

for x in b:

print x + ": " + str(b[x])

呼叫funcf(100, c='你好', b=200),執行結果

100c: 你好

b: 200

大家可以看到,b是一個dict物件例項,它接受了關鍵字引數b和c。

java實際引數列表和形式引數列表長度不同

1 修改兩處程式可以執行 其他 不變,修改cat類如下 class cat extends animal 增加名字和年齡的構造器 public cat string name,int age public void eat 其他 不變,修改testdemo類為public訪問許可權 public c...

python3中定義類函式引數中加self和不加的區別

self是需要在類中使用的,你如果不加,你在這個類成員函式就是靜態方法,無法直接呼叫類中的方法以及成員,需要構造一個類例項,self免去了你自己構造類例項。python3 中定義類函式引數中加 self 和不加的區別在哪 class a def fun pass 這種就是靜態函bai數du,一般用z...

python的open函式的file引數可以使用變數嗎

可以w input 隨便寫個檔名 f open e w txt w python 一個函式裡的變數可以被另一個函式使用嗎?例如一個 函式內有一個變數i,怎麼在函式外或另一個函式中呼叫或更改它。新手學習,謝謝。不能在函式外更改某函式裡的區域性變數,因為每當你例項化那個函式的時候,那個函式裡面的區域性變...