函数的定义与使用
函数的定义与调用
def a():
print("hello")
a()
当前版本可以定义在调用后面
a(
def a():
print("hello"
此处的r为传参,可以使用get_area(10)来传参,使用return返回值
def get_area(r):
return r*r
print(get_area(10))
>>>100
接着上面的代码,当我们没有传参的时候,则回显为None
print(get_area())
函数的实际参数
1.调用函数时,实际传入的参数叫做实参
实参分为两类:
1)位置参数
def get_area(h,r):
return h*r/2
get_area(3,4) h=3 r=4
ger_area(4,3) h=4 r=3
2)赋值参数
使用赋值参数,此时参数先后顺序无所谓
def get_area(h,r):
return h*r/2
get_area(r=3,h=4)
参数值的类型
形式参数
def persion(name,sex="男"):
print(name)
print(sex)
persion("zhangsan","女")
>>>zhangsan
>>>女
形参的可变长度参数
def student(name,sex="男",*tuple1,**dict1):
print(name)
print(sex)
for i in tuple1:
print(i)
for key,value in dict1.items():
print(f"{key}={value}")
student("zhangsan")
>>>zhangsan
>>>男
student("lisi","女")
>>>lisi
>>>女
student("wangwu","男","河北","123456")
>>>wangwu
>>>男
>>>河北
>>>123456
student("赵六","男","河北",address="石家庄",tel="13261634016")
>>>赵六
>>>男
>>>河北
>>>address=石家庄
>>>tel=13261634016
函数的返回值
python函数中可以使用return表达式返回一个值,如果省略表达式甚至省略return关键字表示返回一个None值
一个函数永远有返回值,none也是返回值,none不是空也不是0,none就是none
None和0、空字符串、空列表、空元组、空字典、空集合都不相等
print(None==None)
>>>True
变量作用域
根据作用域不同,变量大致分为全局变量和局部变量
定义在函数内部的是局部变量,另外,函数形参也是局部变量
定义在函数外部的变量是全局变量
全局变量定义后,可以被后面的代码访问,只有程序结束退出python,全局变量才会消失
局部变量在定义后,只能在函数体被访问,函数执行结束,局部变量自动消失,不能再次访问
如果在函数中定义的局部变量和全局变量同名,则自动掩盖全局变量
注意:全局变量可以在函数内读取,但不可改变,如果试图修改全局变量的话会报错
global关键字
a=10
def exam():
global a
a = 5
print(a)
exam()
print(a)
>>>5
>>>5
python内置函数
函数名 | 用途 | 示例 |
---|
abs() | 返回数值的绝对值 | abs(-2) → 2
abs(3.77) → 3.77 |
divmod() | 返回两个数相除的商和余数组成的元组 | divmod(10,3) → (3, 1) |
max() | 返回可迭代对象中的最大值(支持数字、字符串) | max(-1,1,2,3,4) → 4
max('abcef989') → 'f' |
min() | 返回可迭代对象中的最小值 | min(-1,12,3,4,5) → -1 |
pow() | 计算幂运算(可附加取模运算) | pow(2,3) → 8
pow(2,3,5) → 3 (即 8 % 5 ) |
round() | 对数值进行四舍五入(可指定保留小数位数) | round(1.456778) → 1
round(1.45677, 2) → 1.46 |
sum() | 计算可迭代对象的数值总和(可指定起始值) | sum((1,2,3,4)) → 10
sum((1,2,3,4), -10) → 0 |
数据类型转换函数
函数 | 描述 |
---|
int(x) | 将x转换为整数类型 |
float(x) | 将x转换为浮点类型 |
str(x) | 将x转换为字符串 |
chr(x) | 将x转换为转化为一个字符 |
ord(x) | 将字符x转换为其对应的整数值 |
hex(x) | 将一个则行数x转化为一个十六进制的字符串 |
oct(x) | 将一个整数x转化为一个八进制字符串 |
bin(x) | 将一个整数x转换为一个二进制字符串 |
序列操作函数
函数名 | 功能说明 | 示例 |
---|
all() | 判断可迭代对象中的所有元素是否均为 True 值(非零、非空、非False等) | all([True, 1, "abc"]) → True
all([True, 0, ""]) → False |
any() | 判断可迭代对象中是否存在至少一个 True 值的元素 | any([False, 0, ""]) → False
any([False, 1, ""]) → True |
range() | 生成一个整数序列(默认从0开始) | range(5) → 0,1,2,3,4
range(2,5) → 2,3,4 |
map() | 对可迭代对象中的每个元素应用指定函数,返回新迭代器 | list(map(lambda x: x*2, [1,2,3])) → [2,4,6] |
filter() | 根据条件函数过滤可迭代对象中的元素,返回符合条件的迭代器 | list(filter(lambda x: x>0, [-1,0,1])) → [1] |
reduce() | 对可迭代对象中的元素进行累积计算(需从 functools 导入) | from functools import reduce
reduce(lambda a,b: a+b, [1,2,3]) → 6 |
zip() | 将多个可迭代对象的对应位置元素组合成元组,返回迭代器 | list(zip([1,2], ["a","b"])) → [(1, 'a'), (2, 'b')] |
sorted() | 对可迭代对象进行排序,返回新列表(原对象不变) | sorted([3,1,2]) → [1,2,3]
sorted("cba") → ['a','b','c'] |
reversed() | 反转序列(如列表、字符串),返回迭代器 | list(reversed([1,2,3])) → [3,2,1]
''.join(reversed("abc")) → "cba" |
enumerate() | 将一个可迭代对象中的元素及其索引组合成枚举对象,便于在循环中同时获取索引和值 | list(enumerate([‘a’, ‘b’, ‘c’])) → [(0, ‘a’), (1, ‘b’), (2, ‘c’)] for index, value in enumerate([‘a’, ‘b’, ‘c’]): print(index, value) → 0 a、1 b、2 c |