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
global
和return
都是只能在函式體中使用的關鍵字。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. 系統實參高階函式 ——max
、min
、sorted
、map
、reduce
max
、min
引數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...