10 函式初級

2021-10-06 19:42:40 字數 2626 閱讀 6245

函式在計算機中為一段子程式

作用:減少**

方便修改

更易擴充套件

保持**一致性

def log_w(log_num):

with open (『log.txt』,『a』) as a :

a.write(『exec function----%s \n』 %log_num)

pass

for a in range(10) :

log_w(a)
函式名的命名規則:

函式名必須以下劃線或字母開頭,可以包含任意字母、數字或下劃線的組合。不能使用任何的標點符號;

函式名是區分大小寫的。

函式名不能是保留字。

import time

time_format=』%y-%m-%d %x』

time_current=time.strftime(time_format)

#print(time_current)

def write_log(n,s) :

with open(『log.txt』,『a』) as f :

if n==1 :

mark = 『start』

# f.write(』%s action %s is start \n』 %(time_current,s))

else :

mark =『end』

f.write(』%s action %s is %s \n』 %(time_current,s,mark))

def action(n,s):

write_log(n,s)

# write_log_end(1)

action(1,1)

action(2,1)

2020-05-08 13:11:43 action 1 is start

2020-05-08 13:11:43 action 1 is end

2020-05-08 13:11:43 action 1 is start

2020-05-08 13:11:43 action 1 is end

關鍵字引數:

關鍵字引數和函式呼叫關係緊密,函式呼叫使用關鍵字引數來確定傳入的引數值。使用關鍵字引數允許函式呼叫時引數的順序與宣告時不一致,因為 python 直譯器能夠用引數名匹配引數值。

def f(name,age):

print('i am %s,i am %d'%(name,age))
f(age=16,name=『alvin』)

預設引數(預設引數): 呼叫函式時,預設引數的值如果沒有傳入,則被認為是預設值。下例會列印預設的age,如果age沒有被傳入: 123456789 def print_info(name,age,***=『male』):

print('name:%s'%name)

print('age:%s'%age)

print('***:%s'%***)

return

print_info(『alex』,18)

print_info(『鐵鎚』,40,『female』)

引數順序,關鍵引數,預設引數,*args(不定長引數),**kwargs(字典式不定長引數)

要想獲取函式的執行結果,就可以用return語句把結果返回

注意:函式在執行過程中只要遇到return語句,就會停止執行並返回結果,so 也可以理解為 return 語句代表著函式的結束

如果未在函式中指定return,那這個函式的返回值為none

return多個物件,直譯器會把這多個物件組裝成乙個元組作為乙個乙個整體結果輸出.

def add(x,y):

z = x+y

return z

a=add(1,2)

print(a)

作用域(1)變數查詢順序:legb,作用域區域性》外層作用域》當前模組中的全域性》python內建作用域;

(2)只有模組、類、及函式才能引入新作用域;

(3)對於乙個變數,內部作用域先宣告就會覆蓋外部變數,不宣告直接使用,就會使用外部作用域的變數;

(4)內部作用域要修改外部作用域變數的值時,全域性變數要使用global關鍵字,巢狀作用域變數要使用nonlocal關鍵字。nonlocal是python3新增的關鍵字,有了這個 關鍵字,就能完美的實現閉包了。

遞迴函式

遞迴函式的優點: 是定義簡單,邏輯清晰。理論上,所有的遞迴函式都可以寫成迴圈的方式,但迴圈的邏輯不如遞迴清晰。

遞迴特性:

必須有乙個明確的結束條件

每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少

遞迴效率不高,遞迴層次過多會導致棧溢位(在計算機中,函式呼叫是通過棧(stack)這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返 回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴呼叫的次數過多,會導致棧溢位。)

def fibo_new(n): # n可以為零,數列有[0]

if n <= 1:

return n

return (fibo_new(n - 1) + fibo_new(n - 2))

for i in range(20):

print(fibo_new(i))

swift 初級 函式

函式 有返回值 的定義格式 注意 無論函式有無形參,必須得有 func 函式名 形參列表 返回值型別 比如func sum num1 int,num2 int int 沒有返回值的函式 有三種寫法 func 函式名 形參列表 void 比如func text1 sum1 int void 稍微簡單點...

Web js初級 10月16日隨筆

1.parseint 2.parsefloat 遇到第乙個位元組是非數字就結束了。3.var a hello world 這個變數是字串了,對於裡面的每乙個字母來說,他是位元組。裡面有11個位元組。位元組總數用length表示。4.符號運算 字串拼接 表示 的 對於點運算 點前面的叫物件 點後面的叫...

C 初級教程 函式

函式的定義和使用 定義函式 static void write 函式的使用 static void main 控制台應用程式函式的定義形式如下 static 引數陣列 定義乙個函式,用來取得數字的和,但是數字的個數不確定。解決方案 1,定義乙個函式,引數傳遞過來乙個陣列 2,定義乙個引數個數不確定的...