❶ python 定義函數
python 定義函數:
在Python中,可以定義包含若干參數的函數,這里有幾種可用的形式,也可以混合使用:
1. 默認參數
最常用的一種形式是為一個或多個參數指定默認值。
>>> def ask_ok(prompt,retries=4,complaint='Yes or no Please!'):
while True:
ok=input(prompt)
if ok in ('y','ye','yes'):
return True
if ok in ('n','no','nop','nope'):
return False
retries=retries-1
if retries<0:
raise IOError('refusenik user')
print(complaint)
這個函數可以通過幾種方式調用:
只提供強制參數
>>> ask_ok('Do you really want to quit?')
Do you really want to quit?yes
True
提供一個可選參數
>>> ask_ok('OK to overwrite the file',2)
OK to overwrite the fileNo
Yes or no Please!
OK to overwrite the fileno
False
提供所有的參數
>>> ask_ok('OK to overwrite the file?',2,'Come on, only yes or no!')
OK to overwrite the file? test
Come on, only yes or no!
OK to overwrite the file?yes
True
2. 關鍵字參數
函數同樣可以使用keyword=value形式通過關鍵字參數調用
>>> def parrot(voltage,state='a stiff',action='voom',type='Norwegian Blue'):
print("--This parrot wouldn't", action, end=' ')
print("if you put",voltage,"volts through it.")
print("--Lovely plumage, the",type)
print("--It's",state,"!")
>>> parrot(1000)
--This parrot wouldn't voom if you put 1000 volts through it.
--Lovely plumage, the Norwegian Blue
--It's a stiff !
>>> parrot(action="vooooom",voltage=1000000)
--This parrot wouldn't vooooom if you put 1000000 volts through it.
--Lovely plumage, the Norwegian Blue
--It's a stiff !
>>> parrot('a thousand',state='pushing up the daisies')
--This parrot wouldn't voom if you put a thousand volts through it.
--Lovely plumage, the Norwegian Blue
--It's pushing up the daisies !
但是以下的調用方式是錯誤的:
>>> parrot(voltage=5, 'dead')
SyntaxError: non-keyword arg after keyword arg
>>> parrot()
Traceback (most recent call last):
File "<pyshell#57>", line 1, in <mole>
parrot()
TypeError: parrot() missing 1 required positional argument: 'voltage'
>>> parrot(110, voltage=220)
Traceback (most recent call last):
File "<pyshell#58>", line 1, in <mole>
parrot(110, voltage=220)
TypeError: parrot() got multiple values for argument 'voltage'
>>> parrot(actor='John')
Traceback (most recent call last):
File "<pyshell#59>", line 1, in <mole>
parrot(actor='John')
TypeError: parrot() got an unexpected keyword argument 'actor'
>>> parrot(voltage=100,action='voom',action='voooooom')
SyntaxError: keyword argument repeated
Python的函數定義中有兩種特殊的情況,即出現*,**的形式。
*用來傳遞任意個無名字參數,這些參數會以一個元組的形式訪問
**用來傳遞任意個有名字的參數,這些參數用字典來訪問
(*name必須出現在**name之前)
>>> def cheeseshop1(kind,*arguments,**keywords):
print("--Do you have any",kind,"?")
print("--I'm sorry, we're all out of",kind)
for arg in arguments:
print(arg)
print("-"*40)
keys=sorted(keywords.keys())
for kw in keys:
print(kw,":",keywords[kw])
>>> cheeseshop1("Limbuger","It's very runny, sir.","It's really very, very runny, sir.",shopkeeper="Michael Palin",client="John",sketch="Cheese Shop Sketch")
--Do you have any Limbuger ?
--I'm sorry, we're all out of Limbuger
It's very runny, sir.
It's really very, very runny, sir.
----------------------------------------
client : John
shopkeeper : Michael Palin
sketch : Cheese Shop Sketch
>>>
3. 可變參數列表
最常用的選擇是指明一個函數可以使用任意數目的參數調用。這些參數被包裝進一個元組,在可變數目的參數前,可以有零個或多個普通的參數
通常,這些可變的參數在形參列表的最後定義,因為他們會收集傳遞給函數的所有剩下的輸入參數。任何出現在*args參數之後的形參只能是「關鍵字參數」
>>> def contact(*args,sep='/'):
return sep.join(args)
>>> contact("earth","mars","venus")
'earth/mars/venus'
4. 拆分參數列表
當參數是一個列表或元組,但函數需要分開的位置參數時,就需要拆分參數
調用函數時使用*操作符將參數從列表或元組中拆分出來
>>> list(range(3,6))
[3, 4, 5]
>>> args=[3,6]
>>> list(range(*args))
[3, 4, 5]
>>>
以此類推,字典可以使用**操作符拆分成關鍵字參數
>>> def parrot(voltage,state='a stiff',action='voom'):
print("--This parrot wouldn't", action,end=' ')
print("if you put",voltage,"volts through it.",end=' ')
print("E's", state,"!")
>>> d={"voltage":"four million","state":"bleedin' demised","action":"VOOM"}
>>> parrot(**d)
--This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !
5. Lambda
在Python中使用lambda來創建匿名函數,而用def創建的是有名稱的。
python lambda會創建一個函數對象,但不會把這個函數對象賦給一個標識符,而def則會把函數對象賦值給一個變數
python lambda它只是一個表達式,而def則是一個語句
>>> def make_incrementor(n):
return lambda x:x+n
>>> f=make_incrementor(42)
>>> f(0)
42
>>> f(2)
44
>>> g=lambda x:x*2
>>> print(g(3))
6
>>> m=lambda x,y,z:(x-y)*z
>>> print(m(3,1,2))
4
6. 文檔字元串
關於文檔字元串內容和格式的約定:
第一行應該總是關於對象用途的摘要,以大寫字母開頭,並且以句號結束
如果文檔字元串包含多行,第二行應該是空行
>>> def my_function():
"""Do nothing, but document it.
No, really, it doesn't do anything.
"""
pass
>>> print(my_function.__doc__)
Do nothing, but document it.
No, really, it doesn't do anything.
❷ Python中如何定義字元串
在Python中字元串是不可改變的對象(immutable),因此無法直接修改字元串的某一位字元。
一種可行的方式,是將字元串轉換為列表,修改列表的元素後,在重新連接為字元串。
示例代碼如下:
s = 'abcdefghijk' #原字元串l = list(s) #將字元串轉換為列表,列表的每一個元素為一個字元l[1] = 'z' #修改字元串的第1個字元為znewS = ''.join(l) #將列表重新連接為字元串print(newS)#azcdefghijk #修改後的字元串
❸ Python基本語法與變數分別是什麼
【導語】Python的語法和其它編程語言的語法有所不同,編寫Paython程序之前需要對語法有所了解,才能編寫規范的Python程序,那麼Python基本語法與變數分別是什麼?如何在Python編程中進行使用呢?下面就來具體了解一下吧。
1、Python的多行語句
如語句過長,導致編輯器的窗口寬度不能完全完全顯示時。就可以使用「」符合將一行語句分為多行顯示。
2、Python引導
在Python語言中,引號主要用於表示字元串。可以使用單引號(')、雙引號(」)、三引號(』』』),引號必須成對使用。單引號和雙引號用於程序中的字元串表示;三引號允許一個字元串可以跨多行、字元串中可以包含換行符、製表符以及其他特殊字元,三引號也用於程序中的注釋。
3、Python標識符
標識符用於Python語言的變數、關鍵字、函數、對象等數據的命名,標識符的命名需要遵循下面的規則:
(1)可以由字母(大寫A—Z或小寫a—z)、數字(0—9)和_(下劃線)組合而成,但不能由數字開頭;
(2)不能包含除_以外的任何特殊字元,如:%、#、&、逗號、空格等;
(3)不能包含空白字元(換行符、空格和製表符稱為空白字元);
(4)標識符不能是Python語言的關鍵字和保留字;
(5)標識符區分大小寫,num1和Num2是兩個不同的標識符。
(6)標識符的命名要有意義,做到見名知意。
4、Python關鍵字
Python預先定義了一部分有特別意義的標識符,用於語言自身使用。這部分標識符稱為關鍵字或保留字,不能用於其它用途,否則會引起語法錯誤,隨著Python語言的發展,其預留的關鍵字也會有所變化。表1列出了Python預留的關鍵字。
5、變數
用標識符命名的存儲單元的地址稱為變數,變數是用來存儲數據的,通過標識符可以獲取變數的值,也可以對變數進行賦值。對變數賦值的意思是將值賦給變數,賦值完成後,變數所指向的存儲單元存儲了被賦的值,在Pyhton語言中賦值操作符為「=、+=、-=、*=、/=、%=、**=、//=」。
當程序使用變數存儲數據時,必須要先聲明變數,然後才能使用。可以在變數聲明時給變數賦值,也可以不賦值。聲明變數時,不需要聲明數據類型,Python會自動選擇數據類型進行匹配。
以上就是Python基本語法與變數相關內容,希望大家在進行Python編程的時候能夠重視和有效利用起來,當然學習是一個長期的過程,所以一定要不斷學習,加油!
❹ python中z=3.4+1.2j是什麼意思
這是一個復數。
在python中,復數使用m+nj的型式,其中,m為實數部,n為虛數部,j可以認為是根號下負1。
❺ python 函數參數、列表定義
我也是正在學PYthon的基礎語法。
題主忘記了你後面paraTestList(a[2:])中,括弧內的a[2:]命令是創建了一個包含列表a的一部分的一個副本列表,這樣是不會改變列表a的實際內容的。列印出的a肯定也是不會變的。
具體做法是
def paraTestList(L):
L[0]='z'
a=['a','b','c','d']
b=a[2:]
paraTestList(b)
print(b)
希望能幫到你。
❻ 計算機python中的標注是什麼意思
標准解釋如下,希望能幫到你
句法和詞法解析的描述採用經過改進的 BNF 語法標注。這包含以下定義樣式:
name ::= lc_letter (lc_letter | "_")*
lc_letter ::= "a"..."z"
第一行表示 name 是 lc_letter 之後跟零個或多個 lc_letter 和下劃線。而 lc_letter 則是任意單個 'a' 至 'z' 字元。(實際上在本文檔中始終採用此規則來定義詞法和語法規則的名稱。)
每條規則的開頭是一個名稱 (即該規則所定義的名稱) 加上 ::=。豎線 (|) 被用來分隔可選項;它是此標注中最靈活的操作符。星號 (*) 表示前一項的零次或多次重復;類似地,加號 (+) 表示一次或多次重復,而由方括弧括起的內容 ([ ]) 表示出現零次或一次 (或者說,這部分內容是可選的)。* 和 + 操作符的綁定是最緊密的;圓括弧用於分組。固定字元串包含在引號內。空格的作用僅限於分隔形符。每條規則通常為一行;有許多個可選項的規則可能會以豎線為界分為多行。
在詞法定義中 (如上述示例),還額外使用了兩個約定: 由三個點號分隔的兩個字元字面值表示在指定 (閉) 區間范圍內的任意單個 ASCII 字元。由尖括弧 (<...>) 括起來的內容是對於所定義符號的非正式描述;既可以在必要時用來說明 '控制字元' 的意圖。
它是此標注中最靈活的操作符。星號 (*) 表示前一項的零次或多次重復;類似地,加號 (+) 表示一次或多次重復,而由方括弧括起的內容 ([ ]) 表示出現零次或一次 (或者說,這部分內容是可選的)。* 和 + 操作符的綁定是最緊密的;圓括弧用於分組。固定字元串包含在引號內。空格的作用僅限於分隔形符。每條規則通常為一行;有許多個可選項的規則可能會以豎線為界分為多行
雖然所用的標注方式幾乎相同,但是詞法定義和句法定義是存在很大區別的: 詞法定義作用於輸入源中單獨的字元,而句法定義則作用於由詞法分析所生成的形符流。在下一章節 ("詞法分析") 中使用的 BNF 全部都是詞法定義;在之後的章節中使用的則是句法定義。
❼ python手冊中 x[, y[, z]] 是什麼意思 (譬如static str.maketrans(x[, y[, z]]) )
放在中括弧中的參數表示是可選的,static表示靜態方法,可以直接用類名調用
static str.maketrans(x,y,[,z]])表示這個方法可以接受一,二或三個參數,這個方法的返回值可用於字元串的translate方法進行字元映射替換
當只有一個參數時,這個參數必須是字典,比如
smap=str.maketrans({'a':'firstletter'})
print('abcdef'.translate(smap))
將列印'firstletterbcdef',即將字元a替換為firstletter
如果有兩個參數,則兩個參數必須是等長字元串,用於對字元進行一對一映射,比如
smap=str.maketrans('abc','hij')
print('abcdef'.translate(smap))
將列印'hijdef',即a替換為b,b 映射為i,c映射為j
如果還有三個參數,則第三個參數中的字元將被刪除,比如
smap=str.maketrans('abc','hij','def')
print('abcdef'.translate(smap))
將列印'hij'
❽ python中pow(x,y[,z])函數怎麼使用
你的語法有錯誤。
內置函數power(x, y[, z])中的x和y是必選參數,z是可選參數;如果使用了參數z,中括弧必須去掉,即power(x,y,z),其結果是x的y次方再對z求余數,但是這種方式比power(x,y) % z的執行效率要高。
你可以使用power(2, 4)或者power(2,4,3)。
power(2,4)=2的4次方=16;
power(2,4,3)=2的4次方再模上3=16 % 3=1。