1樓:匿名使用者
變數就是定義之後還能發生改變,可以重新賦值的量;
是與常量相對而言,python裡 a=5 就算是宣告乙個變數 a 了;
引數是用在函式裡的。
2樓:匿名使用者
變數與引數的含義在所有程式語言(嗯,我所知的語言)中都是一樣的。1樓說的對,不過補充下,引數也是變數,引數的值也可變嘛。
python中變數名後面加冒號是什麼意思?
3樓: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型別。
4樓:放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 函式變數 引數怎麼使用
5樓:育知同創教育
剛學用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。
python中__init__()括號裡面的變數應該如何寫,分別表示什麼? 20
6樓:睿思博信
__init__(self)相當於其它bai語言中的構造函du數,用於在例項的時候zhi給當dao
前類的例項成員初始化回用的,那個self關鍵答字用於引用該類當前本身這個例項用的,如果想在建立例項的時候,多做一些初始化值的操作,則可以在self後面多加一些引數!比如:
#類描述學生
class student:
def __init__(self,name,age): #構造例項時將引數值傳遞給當前那個例項的成員
self.name=name
self.age=age
s = student('tom',20) #此時執行的就是__init__(self,name,age)
print(s.name)
print(s.age)
------------------
tom20
7樓:匿名使用者
1、在class中,如果你使抄用了__init__(self),那麼襲括號裡面必須有乙個self
這就和__init__(self):
self.name = name
之後的引數必須要用self一樣的
2、在__init__(self) 括號裡面其他的就是引數,和你平時的def af(id,title)一樣的意思
8樓:匿名使用者
parent不過是乙個引數罷了,在這裡指的是父視窗
除了第乙個引數self指的是類自身,其餘都是初始化類時需要傳入的引數
9樓:匿名使用者
__init__()方法是物件初始化方法,在物件例項化時自動呼叫,所以在初始化的時候需要給物件賦值等操作時,可以在此定義
python中什麼是變數變數命的命名,應遵循哪些規則
變數命名注意事項 1 變數名的長度不受限制,但其中的字元必須是字母 數字 或者下劃線 而不能使用空格 連字元 標點符號 引號或其他字元。2 變數名的第乙個字元不能是數字,必須是字母或下劃線。3 python區分大小寫。4 不能將python關鍵字用作變數名。擴充套件資料 python 語言的識別符號...
python中怎麼定義全域性變數,js中如何定義全域性變數?
複製 count 0 def fuc count print count count 1 for i in range 0,10 fuc count 複製 結果是 不是我們想要的結果。解決之道一 全域性變數 複製 global a a 3 def fuc global a print a a a 1...
python類中定義的變數不能給函式用
value 是 ks的乙個類屬性 class attribute 你必須用 ks.value 來訪問它,把 for i in value 改成 for i in ks.value 即可。python 類的變數呼叫自己類中函式的問題 protected void syncexec runnable r...