python小白打基礎之主動出擊

2021-10-08 19:12:25 字數 4151 閱讀 1162

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 怎麼定義私有 法?定義私有方法的方式只需要在方法名前加...