总结
一.认识函数
使用函数:提高代码的复用度,让程序更简洁,封装
二.函数的声明和调用
1.什么是函数:
函数就是对实现某一特定功能的代码段封装
2.函数的分类:
内置函数和自定义函数
内置函数:系统写好的,可以直接使用的函数,例如:print函数,input函数,sum函数,len函数等
自定义函数:程序员自己去创建的函数
3.函数的定义(声明):
a.固定的格式
def 函数名(参数列表):
函数体
b.说明:
def:python中声明函数的关键字
函数名:标识符,不能是关键字; PEP8(所有字母小写,多个单词用下划线隔开),见名知义
():固定格式,并且必须写
参数列表:参数名1,参数名2,参数名3... 参数可以有多个,也可以没有,这的参数也叫形参
参数是用来从函数的外面,向函数里面传值用的(将数据从函数的外面传递到函数的里面)
函数体:实现函数功能的代码段,函数体中可能会包含return语句
4.初学者声明函数的过程:
第一步:确定函数的功能
第二步:根据功能确定函数名
第三步:确定参数(确定有无,确定有几个)
看实现函数的功能,需不需要从函数的外面传递数据进来,需要几个就定义几个参数
第四步:实现函数功能
第五步:确定返回值
5.注意:
函数体只有在调用的时候才会执行
6.函数的调用
a.固定格式
函数名(实参列表)
b.说明:
函数名:你要调用哪个函数,就写对应的函数名,函数只能先声明再调用
实参列表:就是用来给形参赋值的
三.函数的参数
参数:声明函数的时候参数列表中的参数叫形参; 调用函数的时候,参数列表中的参数叫实参
传参:传参的过程就是使用实参给形参赋值的过程,一定要保证每个形参都要有值
实参
1.位置参数:传参的时候实参的位置和形参一一对应(第一个实参传给第一个形参,第二个实参传给第二个形参...)
2关键字参数:函数调用的时候通过'形参名=实参'的形式来传参
a.参数位置
def func1(a, b, c):
print(a, b, c)
func1(3, 'abc', True)
b.关键字参数
func1(c=3, b='abc', a=True)
c.关键字参数和位置参数结合
3.参数的默认值
a.在声明函数的时候,可以参数赋默认值的(可给所有参数赋默认值,也可给部分参数赋默认值)
给部分参数赋值时,要求默认值的参数必须放到参数列表的最后
b.调用参数有默认值的函数的时候,有默认值的参数可传可不传参
声明函数的时候每个参数都有默认值
def func2(a=0, b='a',c=True):
print(a, b, c)
a.所有的参数都不传参,全部使用默认值
b.给部分参数传参
func2(10)
func2(b='abc')
参数列表中,部分参数有默认值(有默认值的必须放到后面)
def func3(a, b, c=20):
print(a, b, c)
没有默认值的参数必须传参,有默认值的参数可传可不传
func3(100, 200)
func3(b=300, a=200)
4.不定个数参数
python中通过在形参名前加*,让这个形参变成一个元祖,
来让这个形参可以同时接受多个实参,多个包含0个
练习:写一个函数,计算多个数的和
def sum2(*nums):
# print(nums, type(nums))
sum1 = 0
for item in nums:
sum1 += item
print(sum1)
sum2()
sum2(1)
sum2(20, 30, 40)
写一个函数,统计指定班级中所有学生的成绩
def class_info(class_name, *scores):
print(class_name, scores)
class_info('python1806', 90, 80, 70)
5.对参数的类型进行说明
python不能直接约束一个变量的类型,但是可以通过说明,来提示用户调用函数的时候,参数的类型
def func4(name:str, age:int, scores:float):
print(name, age)
func4('abc', '10', '89')
四.函数的返回值
1.返回值:函数的返回值就是return关键字后面的表达式的值,就是函数调用表达式的结果
2.python中所有的函数都有返回值,默认是None(没有return)
说明:
a.如果函数体中没有return,函数的返回值就是None
b.调用函数的语句就是函数调用表达式
1.写一个函数,打印'hello'
def say_hello():
print('hello')
# 声明一个变量re,来保存函数调用后的结果
# say_hello()
re = say_hello()
print(re)
2.return关键字(只能写在函数体中)
a.确定返回值
b.结束函数(函数中只要遇到return,函数就直接结束)
def func1(n):
print(n)
return 100
print('=====')
re = func1(10)
print(re)
练习:下面的函数的返回值是多少?
def func2():
if False:
return 200
print(func2()) # None
注意:看一个函数的返回值多少,不是单纯看函数中有无return,而是看函数的执行过程中是否遇到return遇到了,就是return后面的结果,否则就是None
练习:写一个函数,判断一个数是否是偶数,如果是返回True,否则返回False
def func3(n):
if not n % 2:
return True
else:
return False
re = func3(9)
print(re)
什么时候函数需要返回值?
只要实现函数的功能会产生新的数据,就通过返回值将新的数据返回,而不是打印它
练习1:写一个函数,统计一个列表中整数的个数
def count_of_int(list1:list):
# 统计个数
count = 0
for item in list1:
if isinstance(item, int):
count += 1
return count
result = count_of_float([1, 56, 33.3, 2.3])
print(result)
练习2:写一个函数,将一个数字列表中将所有的元素的值都变成原来的二倍
def double_list(list1:list):
for index in range(len(list1)):
list1[index] *= 2
return list1
list1 = [1, 2, 3, 4]
result = double_list(list1)
print(list1, result)
result = double_list([9, 8, 7, 6])
print(resunlt)
作业
1.编写一个函数,求1+2+3+...+N
def sum1(N):
sum1 = 0
for item in range(1, N+1):
sum1 += item
return sum1
re = sum1(3)
print(re)
1. 编写一个函数,求1+2+3+...+N
def sum1(n):
sum1=0
for i in range(n+1):
sum1+=i
return sum1
2. 编写一个函数,求多个数中的最大值
def max_number(*number):
number1=[]
for i in number:
number1.append(i)
number1.sort()
print(number1[-1])
3. 编写一个函数,实现摇骰子的功能,打印n个骰子的点数和
def dice_sum (n):
import random
sum1=0
for i in range(n+1):
a=random.randint(1, 6)
sum1+=a
print(sum1)
4. 编写一个函数,交换指定字典的key和value。
例如:{'a':1, 'b':2, 'c':3} ---> {1:'a', 2:'b', 3:'c'}
def key_change(dict1:dict):
a=[]
new_dict={}
for key in dict1:
a=dict1[key]
new_dict[a]=key
print(new_dict)
5. 编写一个函数,三个数中的最大值
def max_number(*number):
number1=[]
for i in number:
number1.append(i)
number1.sort()
print(number1[-1])
6. 编写一个函数,提取指定字符串中的所有的字母,然后拼接在一起后打印出来
例如:'12a&bc12d--' ---> 打印'abcd'
def all_word(str1:str):
a=''
b=list(str1)
for i in b:
if i.isalpha():
a+=i
print(a)
7. 写一个函数,求多个数的平均值
def averge(*nunber):
sum1=0
a=len(nunber)
for i in nunber:
sum1+=i
print(sum1/2)
- 写一个函数,默认求10的阶层,也可以求其他数的阶层
def sum1(n):
sum1=1
for i in range(1,n+1):
sum1*=i
print(sum1)
sum1(4)
- 写一个函数,可以对多个数进⾏不同的运算
例如: operation('+', 1, 2, 3) ---> 求 1+2+3的结果
operation('-', 10, 9) ---> 求 10-9的结果
operation('', 2, 4, 8, 10) ---> 求 24810的结构
网友评论