課堂筆記09 函式2

2021-10-06 10:17:52 字數 4142 閱讀 6038

返回值就是函式執⾏以後返回的結果 通過return來指定函式的返回值 return後⾯可以跟任意物件,返回值甚⾄可以是⼀個函式

help()是python中內建函式,通過help()函式可以查詢python中函式的⽤法 在定義函式時,可以在函式內部編寫⽂檔字串,⽂檔字串就是對函式的 說明

作⽤域(scope)

作⽤域指的是變數⽣效的區域

在python中⼀共有兩種作⽤域

全域性作⽤域

全域性作⽤域在程式執⾏時建立,在程式執⾏結束時銷毀

所有函式以外的區域都是全域性作⽤域

在全域性作⽤域中定義的變數,都是全域性變數,全域性變數可以在程式的任意 位置進⾏訪問

函式作⽤域

函式作⽤域在函式調⽤時建立,在調⽤結束時銷毀

函式每調⽤⼀次就會產⽣⼀個新的函式作⽤域

在函式作⽤域中定義的變數,都是區域性變數,它只能在函式內部被訪問

命名空間實際上就是⼀個字典,是⼀個專⻔⽤來儲存變數的字典

locals()⽤來獲取當前作⽤域的命名空間

如果在全域性作⽤域中調⽤locals()則獲取全域性命名空間,如果在函式作⽤域中 調⽤locals()則獲取函式命名空間

返回值是⼀個字典

遞迴是解決問題的⼀種⽅式,它的整體思想,是將⼀個⼤問題分解為⼀個個 的⼩問題,直到問題⽆法分解時,在去解決問題

遞迴式函式有2個條件

基線條件 問題可以被分解為最⼩問題,當滿⾜基線條件時,遞迴就不 執⾏了

遞迴條件 可以將問題繼續分解的條件

把函式作為引數傳入新的函式(接受乙個或多個函式作為引數)

def fn():

return 100

# return 'python'

# return [1,2,3]

# return

# def fn2():

# print('hello')

## return fn2

r = fn()

print(r)

# 求任意數的和

def fn(*nums):

result = 0

for n in nums:

result += n

# print(result)

return result

r = fn(1,2)

# print(r+3)

# 返回值 就是函式執行以後返回的結果

# 可以通過return來指定函式的返回值

# 我們可以通過乙個變數來接收函式的返回值

# return後面可以跟任意物件,甚至可以是乙個函式

# def fn():

## # return 100

# # return 'python'

# # return [1,2,3]

# # return

# def fn2():

# print('hello')

## return fn2

# r = fn()

# # print(r)

# # print(fn())

# r()

# 如果僅僅寫乙個return,或者不寫return,則相當於return none

# def fn2():

## return

## r = fn2()

# print(r)

# def fn3():

## print('hello')

# return

# print('123')

## r = fn3()

# print(r)

# 在函式中 return後面的**都不會執行,return一旦執行函式自動結束

# def fn4():

## for b in range(5):

# if b == 3:

# # break

# return # 用來結束函式

# print(b)

# print('迴圈執行完畢')

## fn4()

def fn5():

return 100

# fn5和fn5()的區別

# fn5是函式物件

# fn5()是在呼叫函式

print(fn5)

print(fn5())

# 嘗試求10的階乘(10!)

# 1! = 1

# 2! = 1*2 = 2

# 3! = 1*2*3 = 6

# .....8*9*10 = 3628800

# print(1*2*3*4*5*6*7*8*9*10)

# 建立乙個變數

# n = 10

# for i in range(1,10):

# n *= i

## print(n)

# 求任意數的階乘

# def fn1(n):

## # 引數n 要求階乘的數字

# # n = 10

# # 定義乙個變數 儲存結果

# result = n

# for i in range(1,n):

# result *= i

## return result

## print(fn1(300))

# 遞迴式的函式

# 從前有座山,山里有座廟,廟裡有個老和尚在給乙個小和尚講故事,講什麼故事呢?

# 從前有座山,山里有座廟,廟裡有個老和尚在給乙個小和尚講故事,講什麼故事呢?...

# 遞迴簡單理解就是自己去引用自己

# 遞迴式函式,在函式中自己呼叫自己

# 無窮遞迴 類似於死迴圈

# def fn():

# fn()

# fn()

# 遞迴是乙個解決問題的方式

# 它的整體思想,是將乙個大的問題分解為乙個乙個的小問題,直到問題無法分解時,再去解決問題

# 遞迴式的函式有2個條件

# 1.基線條件

# 問題可以被分解為最小的問題,當滿足基線條件時,遞迴就不在執行了

# 2.遞迴條件

# 將問題可以繼續分解的條件

# 用遞迴的方式求任意數的階乘

# 10!= 10 * 9!

# 9! = 9 * 8!

# 8! = 8 * 7!

# ....

# 1! = 1

def fn2(n):

# 引數 n要求階乘的數字

# 1.基線條件

if n == 1:

# 1的階乘就是1 直接返回結果

return 1

# 2.遞迴條件

return n * fn2(n-1)

print(fn2(10))

# 命名空間實際上就是乙個字典 是乙個專門用來儲存變數的字典

# locals() 用來獲取當前作用域的命名空間 返回值是乙個字典

a = 20

def fn3():

global a

a = 50

print('函式內部:','a =',a)

s = locals()

## # print(s)

# print(a)

# print(s['a'])

# # c = 100

## s['c'] = 100

# print(c) # nameerror: name 'c' is not defined

## print(s)

# def fn4():

## # a = 10

# # s = locals() # 獲取函式內部的命名空間

# # s['b'] = 20

# # print(s)

## global_s = globals()

# global_s['a'] = 30

# print(global_s)

# fn4()

## print(a)

課堂筆記2

一 makefile make命令執行時,需要乙個makefile檔案,以告訴make命令需要怎樣去編譯和鏈結程式。格式 target 目標 dependency 依賴 tab字元 command 命令 例 hello hello.c gcc hello.c o hello 通過hello.o和pr...

課堂筆記2(亂)

select it.iname 商品名稱,itc.cname 商品類別名稱 from item it join itemcategory itc on it.cid itc.id it 為item的別名 提高執行速度,itc為itcategory的別名。商品名稱為iname的別名,列的別名,影響執行...

c 課堂筆記(2)

include include includeusing namespace std int main 1計數控制的迴圈 2條件控制的迴圈 1當型迴圈結構,表示當條件p成立 為真 時反覆執行a操作,直到條件p不成立 為假 時迴圈結束 2直到型迴圈結構,表示先執行a操作,再判斷條件p是否成立 為真 若...