parameter
重点:位置参数和关键字参数、参数默认值
一般:参数类型说明和带*的不定长
#了解:**的不定长
1.位置参数和关键字参数 - 根据函数调用的时候实参的传递分类
“”"
1)位置参数 - 让实参和形参在位置上一一对应
2)关键字参数 - 调用的时候在实参前加’形参名='的结构
3)位置参数和关键字参数可以一起用,位置参数需要在前面
“”"
位置参数
func1(10, 20, 30) # 换位置参数跟着改变
关键参数
func1(a=100, b=200, c=300) # 换位置参数不变
func1(100, b=200, c=300) # 位置参数和关键参数混用,位置参数必须在最前面,否则报错
func1(a=100, b=200, 300) # 报错
func1(100, a=200, c=300) # 报错 传参必须保证每个参数都有值。
2.参数默认值 - 形参
“”"
定义函数的时候可以直接给形参赋值,这样的参数就是有默认值的参数。
在调用有默认值参数的函数时候,有默认值的参数可以不用传参。
def func2(a =1, b=2, c=3):
注意:有的参数有默认值 有的参数没有默认值。没有默认值的参数必须放在有默认值参数的前面。
“”"
3.参数类型说明
“”"
方法一:在默认默认值的形参后加:’:类型名’
方法二:形参默认值的类型就是对应的参数类型
“”"
4.不定长参数
“”"
1)带的不定长参数 - 在形参前加,那么这个形参就是一个不定长参数,可以同时接收多个实参
不定长参数本质就是元组,多应的多个实参是元组的元素
注意:
a:不定长参数对应的形参调用的时候必须用位置参数赋值
2)带的不定长参数 - 在形参前加,那么形参就是一个不定长参数。可以同时接受多个实参不定长参数本质就是字典
注意:必须关键字参数传参
“”"
return value
1.返回值 - 将函数内部的数据传递到函数外部
(什么时候需要返回值:如果实现函数的功能回产生新的数据,那么新的数据就需要返回(初学者))
2.怎么返回数据
“”"
1)return关键字后面的值就是函数的返回值 # return+返回值 - 怎么确定函数返回值
2)函数调用表达式的值就是函数的返回值 - 怎么在函数外面获得函数的返回值
“”"
3.return关键字、
“”"
1)return只能在函数体中使用
2)return用来将数据从函数的内部传递到函数外部,return后面的值就是函数的返回值。
3)return可以直接结束函数 - 在执行函数体的时候,如果遇到return函数直接结束
“”"
返回值的使用
“”"
使用函数调用表达式的值就是使用函数的返回值
“”"
def func5():
result=100
1)可以直接打印函数调用表达式
print(100)
print(func5())
2)可以使用函数调用表达式给变量赋值
a=100
b=func5()
print(a,b)
3
print(100+200)
print(func5()+200)
list1=[100, 200]
list2 = [func5(), 200]
print(list1, list2)
functionVaiable
根据变量作用域的不同,将变量分为全局变量和局部变量。
1.全局变量
“”"
没有定义在函数和类中的变量,都是全局变量。全局变量从定义开始到整个程序结束(文件结束)的任何地方都可以用
“”"
a 是全局变量
a = 10
b 和 c都是全局的
for b in range(3):
c = 100
2.局部变量
“”"
python中定义在函数中的变量就是局部变量,局部变量的作用域是从定义开始到函数结束。
“”"
def func3():
m = 10
n = ‘abc’
print(f’函数中m、n:{m},{n}’)
func3()
print(f’函数外m、n:{m},{n}’) # 报错!
形参也是局部变量
总结:当调用函数的时候系统会自动为被调用的函数开辟一个临时的栈区间,用来保存在函数中定义的变量。
当函数调用结束,这个函数对应的栈区间会自动释放。里面的数据会全部销毁销毁之前会先将返回值返回。
3.global
“”"
作用:
1)在函数中修改全局变量的值
2)直接在函数里面定义全局变量
“”"
Anonymous functions
1.什么是匿名函数
“”"
匿名函数的本质是函数(匿名函数只能用来定义功能用一句代码就能实现功能的函数)
语法:
函数名 = lambda 形参列表:返回值
相当于:
def 函数名(形参列表):
return 返回值
“”"
写一个匿名函数求两个的和
sum1 = lambda num1, num2: num1+num2
sum1(10, 20)
练习:写一个匿名函数,判断指定的年是闰年。结果是True或者False
is_leap_year = lambda years:years % 4 == 0 and years % 4 !=0
print(is_leap_year(2020))
作业
- 写一个匿名函数,判断指定的年是否是闰年
A_leap_year=lambda years:years % 4==0 and years % 4!= 0
- 写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自带的逆序函数)
def order_(list1):
"""
:param list1: 输入的列表
:return:
"""
print(list1[-1::-1])
- 写一个函数,获取指定列表中指定元素的下标(如果指定元素有多个,将每个元素的下标都返回)
例如: 列表是:[1, 3, 4, 1] ,元素是1, 返回:0,3
def subscript_(nums, specified1):
"""
:param nums: 输入的字符
:param specified1: 指定的字符
:return:
"""
count = 0
for x in range(len(nums)):
if nums[x] == specified1:
count += 1
print(x)
- 编写一个函数,计算一个整数的各位数的平方和
例如: sum1(12) -> 5(1的平方加上2的平方) sum1(123) -> 14
def sum1(num1: int):
str1 = str(num1)
num2 = 0
for x in str1:
num2 += (int(x)) ** 2
return num2
print(sum1(123))
- 求列表 nums 中绝对值最大的元素
例如:nums = [-23, 100, 89, -56, -234, 123], 最大值是:-234
-
已经列表points中保存的是每个点的坐标(坐标是用元组表示的,第一个值是x坐标,第二个值是y坐标)
points = [ (10, 20), (0, 100), (20, 30), (-10, 20), (30, -100) ]
1)获取列表中y坐标最大的点
2)获取列表中x坐标最小的点
3)获取列表中距离原点最远的点
4)将点按照点到x轴的距离大小从大到小排序