第三週 Day2 Python函式

2021-10-18 19:08:58 字數 4764 閱讀 7652

1. 什麼是返回值

​ 從函式內部傳遞到函式外部的資料就是函式返回值。

2. 什麼時候函式需要返回值

​ 如果實現函式的功能產生了新的資料,那麼這個函式就需要通過返回值把新產生的資料返回。

3.怎麼將資料返回

​ 1)怎麼確定函式返回值

​ 返回值就是return關鍵字後面的值。(如果沒有return,預設返回none)

​ 2)怎麼獲取函式返回值

​ 函式呼叫表示式的值就是函式返回值。

def

sum1

(a, b)

:return a + b

s = sum1(10,

20)print

(s)# 30

4. 怎麼使用函式返回值

​ 返回值能做的,函式呼叫表示式都可以做。

5.return的使用

​ 1)需要將函式中產生的資料返回的時候使用return:return 需要返回的資料

​ 2)提前結束函式(執行函式體的時候如果遇到return,函式直接結束)

練習:寫乙個函式,給乙個整數,如果這個數是偶數就計算這個熟的階乘,否則就計算這個數的立方值。

def

func1

(num:

int)

:if num &1:

return num **

3else

: num1 =

1for x in

range(1

, num +1)

: num1 *= x

return num1

​ 根據變數作用域(能使用的範圍)的不同將變數分為:全域性變數區域性變數

1. 全域性變數

​ 沒有定義在函式裡面或者類裡面的變數都是全域性變數。全域性變數的作用域是從定義開始到程式結束。

2. 區域性變數

​ 定義在函式中的變數就是區域性變數(形參也是區域性變數)。區域性變數的作用域是從定義開始到函式結束。

3. global

globalreturn都是只能在函式體中使用的關鍵字。global在函式中定義全域性變數。

global的作用:a.在函式內部修改全部變數的值。

b.在函式內部定義乙個全域性變數。

age =

10def

func()

:global age

age =

20print

(age)

# 20

global name

name =

'小明'

func(

)print

(age)

# 20

print

(name)

# 小明

如果直接在函式內修改全域性變數的值,它會在函式內容建立乙個對應的區域性變數,導致修改失敗。

1. 什麼是匿名函式

​ 匿名函式還是函式。匿名函式可以看成是函式體只有一條語句的普通函式。

定義匿名函式的語法:

(函式名 =)lambda 引數列表:返回值

lambda x: x*

2func1 =

lambda x: x**

2func2 =

lambda x, y=

10: x+y

print

(func2(2)

)# 12

練習:寫乙個匿名函式判斷指定的年是否是閏年

func2 =

lambda year:

(year %4==

0and year %

100!=0)

or year %

400==

0print

(func2(

400)

)# true

print

(func2(

1998))

# false

2.函式就是變數

python中定義函式其實就是定義乙個型別是function的變數,函式名就是變數名。

普通變數能做的,函式都可以做。

1.實參高階函式

​ 如果乙個函式的握個引數是函式,那麼這樣的函式就是實參高階函式。

def

fun1

(x):

# 實參高階函式

print

(x()+10

)func2 =

lambda a=

10, b=20:

12.4

fun1(func2)

# 22.4

2.返回值高階函式

​ 如果乙個函式的返回值是函式,那麼這個函式就是返回值高階函式。

3. 系統實參高階函式 ——maxminsortedmapreduce

maxmin

引數key要求傳乙個函式,可以通過這個函式來確定比較大小的時候的比較標準。

key的要求:a. 是乙個函式

b. 這個函式必須有且只有乙個引數(這個引數就相當於序列中的每個元素)

c. 這個函式需要乙個返回值(返回值就是比較標準)

nums =[40

,45,87

,59,98

]# 求元素值最大的元素

result =

max(nums, key=

lambda item: item)

print

(result)

# 98

# 求nums中個位數最大的元素

result =

max(nums, key=

lambda item: item %10)

print

(result)

# 59

############################################

nums =

[128,88

,90,71

]# 求各個位上的數字和最大的元素

deff

(item)

: s =

0for x in

str(item)

: s +=

int(x)

return s

result =

max(nums, key=f)

print

(result)

# 88

練習:獲取nums數值最大的元素

nums = [123, 『78』, 89, 『345』]

nums =

[123

,'78',89

,'345'

]result =

max(nums, key=

lambda item:

int(item)

)print

(result)

# 345

sorted

nums =[78

,67,55

,18,29

]# 對nums按照個位數的大小從小到大排序

new_nums =

sorted

(nums, key=

lambda item: item %10)

print

(new_nums)

# [55, 67, 78, 18, 29]

練習:

1)獲取students年齡最小的學生(用min)

2)按照分數對students從大到小排序

students =[,

,,,]

# 1)獲取students年齡最小的學生(用min)

result =

min(students, key=

lambda item: item[

'age'])

print

(result)

# 2)按照分數對students從大到小排序

new_students =

sorted

(students, reverse=

true

, key=

lambda item: item[

'score'])

print

(new_students)

第二週Day2 Python容器

1.容器型資料型別 乙個變數可以儲存多個資料 通過迴圈可以完成對列表中每個元素的操作。列表重複運算 a 0 0,0 0,0 0 b 0 6print a a a 0,0,0,0,0,0 print b b b 0,0,0,0,0,0 字串也可以重複運算 s hello 6 print s s s h...

第三週作業 2

程式頭部注釋開始 程式的版權和版本宣告部分 作 者 孫建朋 完成日期 2012 年 02 月 05 日 版 本 號 20120205 對任務及求解方法的描述部分 輸入描述 問題描述 程式輸出 程式頭部的注釋結束 include using namespace std class time time ...

第三週作業2

問題1 這個程式要找的是符合什麼條件的數?問題2 這樣的數存在麼?符合這一條件的最小的數是什麼?問題3 在電腦上執行這一程式,你估計多長時間才能輸出第乙個結果?時間精確到分鐘 電腦 單核cpu 4.0g hz,記憶體和硬碟等資源充足 問題4 在多核電腦上如何提高這一程式的執行效率?using sys...