def functionname(parameters):
"函式_文件字串"
function_suite
return [expression]
1.2 呼叫
def printme(str):
print(str)
printme("我要呼叫使用者自定義函式!") # 我要呼叫使用者自定義函式!
printme("再次呼叫同一函式") # 再次呼叫同一函式
temp = printme('hello') # hello
print(temp) # none
位置引數 (positional argument)
預設引數 (default argument)
可變引數 (variable argument)
關鍵字引數 (keyword argument)
命名關鍵字引數 (name keyword argument)
引數組合
2.1 位置引數
def functionname(arg1):
"函式_文件字串"
function_suite
return [expression]
arg1 - 位置引數 ,這些引數在呼叫函式 (call function) 時位置要固定。
2.2 預設引數
def functionname(arg1, arg2=v):
"函式_文件字串"
function_suite
return [expression]
arg2 = v - 預設引數 = 預設值,呼叫函式時,預設引數的值如果沒有傳入,則被認為是預設值。
預設引數一定要放在位置引數 後面,不然程式會報錯。
def printinfo(name, age=8):
print('name:,age:'.format(name, age))
printinfo('小馬') # name:小馬,age:8
printinfo('小馬', 10) # name:小馬,age:10
2.3 可變引數
def functionname(arg1, arg2=v, *args):
"函式_文件字串"
function_suite
return [expression]
args - 可變引數,可以是從零個到任意個,自動組裝成元組。
加了星號()的變數名會存放所有未命名的變數引數。
2.4 關鍵字引數
def functionname(arg1, arg2=v, *args, **kw):
"函式_文件字串"
function_suite
return [expression]
**kw - 關鍵字引數,可以是從零個到任意個,自動組裝成字典。
「可變引數」和「關鍵字引數」的同異總結如下:
可變引數允許傳入零個到任意個引數,它們在函式呼叫時自動組裝為乙個元組 (tuple)。
關鍵字引數允許傳入零個到任意個引數,它們在函式內部自動組裝為乙個字典 (dict)。
2.5 命名關鍵字引數
def functionname(arg1, arg2=v, *args, *, nkw, **kw):
"函式_文件字串"
function_suite
return [expression]
*, nkw - 命名關鍵字引數,使用者想要輸入的關鍵字引數,定義方式是在nkw 前面加個分隔符 *。
如果要限制關鍵字引數的名字,就可以用「命名關鍵字引數」
使用命名關鍵字引數時,要特別注意不能缺少引數名。
2.6 引數組合
在 python 中定義函式,可以用位置引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數,這 5 種引數中的 4 個都可以一起使用,但是注意,引數定義的順序必須是:
位置引數、預設引數、可變引數和關鍵字引數。
位置引數、預設引數、命名關鍵字引數和關鍵字引數。
要注意定義可變引數和關鍵字引數的語法:
*args 是可變引數,args 接收的是乙個 tuple
**kw 是關鍵字引數,kw 接收的是乙個 dict
命名關鍵字引數是為了限制呼叫者可以傳入的引數名,同時可以提供預設值。定義命名關鍵字引數不要忘了寫分隔符 *,否則定義的是位置引數。
警告:雖然可以組合多達 5 種引數,但不要同時使用太多的組合,否則函式很難懂。
lambda argument_list: expression
expression 中沒有 return 語句,因為 lambda 不需要它來返回,表示式本身結果就是返回值。
匿名函式擁有自己的命名空間,且不能訪問自己引數列表之外或全域性命名空間裡的引數。
1.怎麼給函式編寫⽂檔?
def myfirstfunction(name):
"函式定義過程中name是形參"
# 因為ta只是乙個形式,表示佔據乙個引數位置
print('傳遞進來的叫做實參,因為ta是具體的引數值!'.format(name))
myfirstfunction('老馬的程式人生')
# 傳遞進來的老馬的程式人生叫做實參,因為ta是具體的引數值!
print(myfirstfunction.__doc__)
# 函式定義過程中name是形參
help(myfirstfunction)
# help on function myfirstfunction in module __main__:
# myfirstfunction(name)
# 函式定義過程中name是形參
2.怎麼給函式引數和返回值註解?
引數註解:
def accumlate(x:int, y:int):
return x*y
返回值註解:
def accumlate(x:int, y:int) -> int:
return x*y
3.閉包中,怎麼對數字、字串、元組等不可變元素更新。
如果要修改閉包作用域中的變數則需要nonlocal
關鍵字
4.分別根據每一行的首元素和尾元素大小對二維列表 a = [[6, 5], [3, 7], [2, 8]] 排序。(利用lambda表示式)
a=[[6, 5], [3, 7], [2, 8]]
print(a)
x = sorted(a, key=lambda a: a[0], reverse=false)
print("按照首字元正序排列:"+str(x))
x = sorted(a, key=lambda a: a[0], reverse=true)
print("按照首字元逆序排列:"+str(x))
x = sorted(a, key=lambda a: a[1], reverse=false)
print("按照尾字元正序排列:"+str(x))
x = sorted(a, key=lambda a: a[1], reverse=true)
print("按照尾字元逆序排列:"+str(x))
5.利用python解決漢諾塔問題?
public static void hanoi(int n,char a,char b,char c)
}def hanoi(n, a, b, c):
if n==1:
print(a+'->'+c)
else:
hanoi(n-1, a, c, b)
print(a+'->'+c)
hanoi(n-1, b, a, c)
hanoi(3, 'a', 'b', 'c')
小白打基礎系列 排序演算法之插入 冒泡與快速排序
直接插入法是最簡單的排序法,其排序思想如下 打牌時,每抓一張牌就將其放到對應的順序位置。下面是待排記錄的型別定義 define maxsize 200 typedef int keytype 關鍵字型別 typedef struct redtype 記錄型別 typededf struct sqli...
小白打基礎系列 線性表的應用之大愛線性表
2020資料結構課程設計之大愛線性表 大愛線性表 不少參賽同學剛學資料結構,對線性表最是熟悉不過。這裡我們給線性表增加兩個特殊的操作,第乙個是 r 操作,表示逆轉整個表,如果表長為l,原來的第i個元素變成第l i 1個元素。第二個操作是 d 表示刪除表的第乙個元素,如果表為空,則返回乙個 error...
Python打基礎之類 物件與方法
1 以下類定義中哪些是類屬性,哪些是例項屬性?class c num 0 def init self self.x 4 self.y 5 c.count 6c.count 6 為類的屬性,self.x 4 以及 self.y 5 為例項屬性 2 怎麼定義私有 法?定義私有方法的方式只需要在方法名前加...