1函數(shù)
1.函數(shù):就是對(duì)實(shí)現(xiàn)某一特定功能的代碼塊的封裝
2.作用:封裝(將功能綁定在一個(gè)函數(shù)中筷厘,想要使用這個(gè)功能的時(shí)候辱揭,直接調(diào)用函數(shù))
3.怎么聲明函數(shù):
def 函數(shù)名(參數(shù)列表):
'''函數(shù)說(shuō)明'''
函數(shù)體
- def:是Python中聲明函數(shù)的關(guān)鍵字
- 函數(shù)名:標(biāo)識(shí)符掷邦。 PEP8的命名格式。見(jiàn)名知義(看到函數(shù)名大概知道函數(shù)的功能)
- 函數(shù)說(shuō)明:對(duì)函數(shù)的功能和參數(shù)以及返回值進(jìn)行說(shuō)明
- ():是固定格式
- 參數(shù)列表:(形參列表) 參數(shù)名1,參數(shù)名2舅踪,參數(shù)名3...。
參數(shù)的功能是用來(lái)接收從函數(shù)外部傳到函數(shù)內(nèi)部的數(shù)據(jù) - 函數(shù)體:實(shí)現(xiàn)函數(shù)功能的代碼塊良蛮,可能會(huì)包含一個(gè)return語(yǔ)句
初學(xué)者聲明函數(shù)的步驟:
a.確定函數(shù)的功能
b.根據(jù)功能確定函數(shù)名
c.確定參數(shù):
- 確定需不需要參數(shù)
- 確定需要幾個(gè)參數(shù)
- 看實(shí)現(xiàn)函數(shù)的功能需不需要從外面?zhèn)鲾?shù)據(jù)到函數(shù)里面
d.實(shí)現(xiàn)函數(shù)的功能
e.確定返回值
5函數(shù)的調(diào)用
函數(shù)名(實(shí)參列表)
- 函數(shù)名:調(diào)用的函數(shù)一定是已經(jīng)聲明過(guò)的抽碌,想要使用什么功能就調(diào)用對(duì)應(yīng)的函數(shù)
- 實(shí)參列表:實(shí)參是用來(lái)給形參賦值的
函數(shù)的調(diào)用過(guò)程:
1.回到函數(shù)聲明的地方
2.使用實(shí)參給形參賦值
3.執(zhí)行函數(shù)體
4.函數(shù)體執(zhí)行完成后,回到函數(shù)調(diào)用的位置
注意:
1.函數(shù)只有在調(diào)用的時(shí)候才會(huì)執(zhí)行
2.函數(shù)調(diào)用的時(shí)候一定要保證每個(gè)形參都有值
3.一個(gè)函數(shù)可以調(diào)用多次
小練習(xí):寫一個(gè)函數(shù)計(jì)算兩個(gè)數(shù)的和
def my_sum(number1, number2):
"""
(這兒寫函數(shù)的功能描述)求兩個(gè)數(shù)的和
:param number1: 提供第一個(gè)數(shù)决瞳,int類型
:param number2: 提供第二個(gè)數(shù)货徙,int類型
:return: 對(duì)返回值進(jìn)行說(shuō)明
"""
# my_sum = number1 + number2
print(number1 + number2)
# 函數(shù)的調(diào)用一定是在函數(shù)的聲明后
my_sum(99, 1)
結(jié)果:
100
小練習(xí)2:聲明一個(gè)函數(shù),功能是打印10個(gè)*
# 調(diào)用這個(gè)函數(shù)
def print_star():
print('*' * 10)
print_star()
print_star()
print_star()
結(jié)果:
**********
**********
**********
2.函數(shù)的參數(shù)
參數(shù)的作用:從函數(shù)的外面給函數(shù)傳值
1.位置參數(shù)
傳參的時(shí)候皮胡,實(shí)參按順序給形參賦值
def func1(a, b, c):
print(a, b, c)
func1(10, 20,30)
結(jié)果:
10 20 30
2.關(guān)鍵字參數(shù)
調(diào)用函數(shù)的時(shí)候:函數(shù)名(參數(shù)=值)
def func1(a, b, c):
print(a, b, c)
func1(b=20, a=10, c=30)
結(jié)果:
10 20 30
說(shuō)明:位置參數(shù)和關(guān)鍵字參數(shù)可以混著來(lái)
3.參數(shù)的默認(rèn)值
python中函數(shù)聲明的時(shí)候參數(shù)可以設(shè)置默認(rèn)值,有默認(rèn)值的參數(shù)必須放在參數(shù)列表后邊3占铡!屡贺!
調(diào)用參數(shù)有默認(rèn)值的函數(shù)蠢棱,有默認(rèn)值的參數(shù)可以傳參也可以不傳參
def func2(a, b=10, c=100):
print(a, b, c)
func2(10, 20, 30)
func2(10)
結(jié)果:
10 20 30
10 20 30
10 10 100
4.參數(shù)個(gè)數(shù)不定
參數(shù)個(gè)數(shù)不確定的時(shí)候锌杀,就在聲明函數(shù)的時(shí)候,形參的前面加一個(gè)*號(hào)泻仙,將形參變成元祖
調(diào)用函數(shù)的時(shí)候糕再,這個(gè)參數(shù)會(huì)將對(duì)應(yīng)的實(shí)參作為元祖的元素保存起來(lái)
寫一個(gè)函數(shù),求多個(gè)數(shù)的和
def my_sum(*numbers):
print(numbers)
sum1 = 0
for item in numbers:
sum1 += item
print(sum1)
my_sum(10, 20, 30)
結(jié)果:
60
注意:參數(shù)個(gè)數(shù)不定玉转,可以是形參中的一部分是不定的
個(gè)數(shù)不確定的參數(shù)要放到參數(shù)的最后
def func1(char, *numbers):
print(char, numbers)
func1('a', 10, 20, 39)
# 參數(shù)個(gè)數(shù)不定突想,也可以不傳參,對(duì)應(yīng)的參數(shù)的值就是一個(gè)空的元祖
func1('a')
結(jié)果:
a (10, 20, 39)
a ()
習(xí)題
- 編寫?個(gè)函數(shù)究抓,求1+2+3+...+N
def my_sum1(number):
sum1 = 0
for item in range(number):
item += 1
sum1 += item
print(sum1)
my_sum1(5)
結(jié)果:
15
- 編寫?個(gè)函數(shù)猾担,求多個(gè)數(shù)中的最?值
def max_num1(*numbers):
# print(numbers)
max1 = numbers[0]
for item in numbers:
if item > max1:
max1 = item
print(max1)
max_num1(10,50,66,-1,-99)
結(jié)果:
66
3.編寫?個(gè)函數(shù),實(shí)現(xiàn)搖?子的功能刺下,打印n個(gè)?子的點(diǎn)數(shù)和
def points(a):
import random
sum = 0
for sum1 in range(a):
number = random.randint(1, 6)
print('點(diǎn)數(shù)為:', number)
sum += number
print(sum)
points(5)
結(jié)果:
點(diǎn)數(shù)為: 6
點(diǎn)數(shù)為: 1
點(diǎn)數(shù)為: 1
點(diǎn)數(shù)為: 3
點(diǎn)數(shù)為: 1
12
4.編寫?個(gè)函數(shù)绑嘹,交換指定字典的key和value。 例如:{'a':1, 'b':2, 'c':3} ---> {1:'a', 2:'b', 3:'c'}
def change(dict1):
dict2 = {}
for key, value in dict1.items():
dict2[value] = key
print(dict2)
change({'a':1, 'b':2, 'c':3})
結(jié)果:
{1: 'a', 2: 'b', 3: 'c'}
5.編寫一個(gè)函數(shù)怠李,三個(gè)數(shù)中的最大值
def max_num1(a, b, c):
# print(numbers)
list = [a, b, c]
max1 = list[0]
for item in list:
if item > max1:
max1 = item
print(max1)
max_num1(10,50,66)
結(jié)果:
66
6 編寫?個(gè)函數(shù)圾叼,提取指定字符串中的所有的字母,
def print_letters(str1):
str2 = ''
for x in str1:
if 'a' <= x <= 'z' or 'A' <= x <= 'Z':
str2 += x
print(str2)
print_letters('12a&bc12d--')
結(jié)果:
abcd
7.寫?個(gè)函數(shù)捺癞,求多個(gè)數(shù)的平均值
def avg(*numbers):
sum1 = 0
for i in numbers:
sum1 += i
print(sum1 / len(numbers))
avg(10,20,30)
結(jié)果:
20.0
8.寫?個(gè)函數(shù)夷蚊,默認(rèn)求10的階層,也可以求其他數(shù)的階層
def layer(number):
product = 1
for x in range(number):
if x > 0:
product *= x
print(product)
layer(10)
結(jié)果:
362880
9.寫一個(gè)函數(shù)髓介,可以對(duì)多個(gè)數(shù)進(jìn)?不同的運(yùn)算
例如: operation('+', 1, 2, 3) ---> 求 1+2+3的結(jié)果
operation('-', 10, 9) ---> 求 10-9的結(jié)果
operation('', 2, 4, 8, 10) ---> 求 24810的結(jié)構(gòu)
def operation(str, *numbers):
if str == '+':
sum1 = 0
for i in numbers:
sum1 += i
print(sum1)
elif str == '-':
for i in numbers:
sum1 = numbers[0]-numbers[1]
print(sum1)
elif str == '*':
sum1 = 1
for i in numbers:
sum1 *= i
print(sum1)
operation('-', 10, 9)
結(jié)果:
1