5.1.1.函数定义
# 语法定义:
def sayhello(): # 函数名
print("hello,world")
sayhello() #函数调用
# 带参数的形式
def jia(x, y):
count = x * y
print(count)
jia(5, 10) #带参数的函数调用
5.1.2.函数的各种参数
5.1.2.1.形参、实参
#x,y都是形参,只存在于函数中,函数结束那么形参的生命周期也就结束了
def jia(x, y):
count = x * y
print(count)
a = 5
b = 10
jia(a, b) #a,b都是实参,生命周期为整个程序,与形参一一对应,a对x,b对y
5.1.2.1.默认参数
def classpeople(name, age, course, country):
print("---班级人员信息---")
print("姓名:", name)
print("年龄:", age)
print("国籍:", country)
print("课程:", course)
classpeople("王大伟", 20, "python", "CN")
classpeople("李失明", 23, "c", "CN")
classpeople("吴天地", 28, "linux", "CN")
classpeople("王桂芳", 18, "linux", "CN")
可以看出很多都是来自cn的,那么我们可以修改他的默认参数那么就不需要输入那么多cn了,需要在形参中将有默认参数的放到最后
def classpeople(name, age, course, country="CN"):
print("---班级人员信息---")
print("姓名:", name)
print("年龄:", age)
print("国籍:", country)
print("课程:", course)
classpeople("王大伟", 20, "python")
classpeople("李失明", 23, "c")
classpeople("吴天地", 28, "linux")
classpeople("王桂芳", 18, "linux")
如果只有一个人有特殊情况需要修改的话,只需在实参中加入他的修改值即可
def classpeople(name, age, course, country="CN"):
print("---班级人员信息---")
print("姓名:", name)
print("年龄:", age)
print("国籍:", country)
print("课程:", course)
classpeople("王大伟", 20, "python")
classpeople("李失明", 23, "c")country=
classpeople("吴天地", 28, "linux",'USA') #因为实参与形参一一对应,所以不需要写country='USA'
classpeople("王桂芳", 18, "linux")
5.1.2.1.关键参数
位置参数优先级>关键参数
位置参数就是需要一一对应的参数,关键参数就是被赋值的实参,所以位置参数在前,关键参数在后
5.1.2.1.非固定参数
*args:会把多传入的位置参数变成一个元组形式
**kwargs:把多传入的关键参数变成字典的形式
def classpeople(name, age=20, *args, **kwargs):
print(name, age, args, kwargs)
classpeople("王大伟", 20, "python", "爱好女", "唱跳rap", nunber=15452205521, addr="四川省")
# 打印结果:王大伟 20 ('python', '爱好女', '唱跳rap') {'nunber': 15452205521, 'addr': '四川省'}
5.1.3.函数的返回值
使用return语句把结果返回,当函数遇到return,那么就代表函数结束
如果函数没有指定return,那么这个函数返回值为None。
可以返回多个结果,return True,name,age,结果以元组形式返回
5.1.4.局部变量和全局变量
在函数内的变量叫做局部变量
在函数外的变量叫做全局变量
函数内部找不到这个变量时,会在全局变量中查找变量,局部变量优先级>全局变量
当全局变量与局部变量同名时,函数优先使用局部变量
在函数内无法修改全局变量的值
如果想要强行修改全局变量,可以在函数中声明全局变量global name
,然后再赋值即可
给函数传递列表-字典时的特殊情况,那就是全局变量会被修改,字典或列表本身不可以被修改,而列表,字典内的元素可以被修改
d = {
"name": "iwbf","age": "18","hobby": "唱歌",
}
l = ["iwbf", "china", "man"]
def change(info, op):
info["hobby"] = "学习"
op.append("帅哥")
d = {} #将字典变成空,但是不起作用
l = [] #将列表变为空,但是不起作用
change(d, l)
print(d, l)
#打印结果:{'name': 'iwbf', 'age': '18', 'hobby': '学习'} ['iwbf', 'china', 'man', '帅哥']
5.1.5.内置函数
1.abs()
取绝对值
print(abs(-10))
#打印结果:10
2.all()
判断列表当中的bool值是否都为true
a = [0, 1, 2, 3, 4, 5, 6, 7]
print(all(a))
#可以看到列表其中有一个元素为0他的bool值为false,那么整体就为false
b = [ 1, 2, 3, 4, 5, 6, 7]
print(all(b))
#整体为true,则返回ture
3.any()
只要有任意一个为true,那么就返回true
a = [0, 1, 2, 3, 4, 0, 0, 0]
print(any(a)) # 任意一个为ture,那么就返回true
4.bool()
对bool值的判断
print(bool(0))
#0的bool值为false,所以返回值为false
print(bool(1))
#1的bool值为true,所以返回值为true
5.chr()
输入一个整型数字,返回他的ASCII值
print(chr(97)) #返回一个a
6.dict()
不加参数,可以为你创建一个空的字典,如果加参数可以为你创建于一个带key和value的字典
print(dict()) # 打印结果为{}
print(dict(name="iwbf", age=18)) # 打印结果为{'name': 'iwbf', 'age': 18}
7.dir()
打印当前程序所有在内存中的变量名,前面_file_,有这种两个下划线加个变量名的是python自带变量
name="iwbf"
age=18
print(dir())
#打印结果:
# ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'age', 'name']
8.help()
如果你不知道一个函数如何使用,可以使用help查看这个函数的使用方法。
print(help(dir))
9.id()
可以查看变量在内存中的地址
a = [0, 1, 2, 3, 4, 0, 0, 0]
print(id(a))
# 打印结果:2101145827904
10.input()
等待用户输入
a = input()
print(a)
11.int()
强制将字符转换为int类型
a = '8'
print(int(a))
12.len()
计算字符串长度
b = "dwadwa"
print(len(b)) #打印结果:6
13.list()
生成一个空列表
print(list()) # 打印结果:[]
14.locals()
打印当前作用域中所有变量名 和 变量值
name = "iwbf"
age = 18
print(locals())
# {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000002010BC748E0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:\\pycharmProjects\\python2023特训营\\Day02\\user_login.py', '__cached__': None, 'name': 'iwbf', 'age': 18}
15.max()
求最大值
l = list(range(10))
print(max(l)) #打印结果:9
16.min()
求最小值
l = list(range(10))
print(min(l)) #打印结果:0
17.sum()
求和
l = list(range(10))
print(sum(l)) #打印结果:45
18.open()
用于打开文件的函数
19.ord()
传一个字符,可以帮你打印出他的ASCII码值
print(ord("a"))
#打印结果:97
20.print()
打印出输出函数
21.range()
range是一个内置函数,range(start,stop,step=1),start表示序列起始值(默认为0),stop表示序列终止值,不包括该值,即生成的序列中最大值为stop-1,step表示序列步长(默认为1)。start、stop、step均为整数类型。
100取不到所以要写101如果不写start则默认为0,那么就会打印0-100
for i in range(101):
print(i)
# 打印结果:0-100
修改步长
for i in range(1, 101, 2):
print(i)
# 打印结果:1-100的奇数
range的反向使用,和字符串的切片操作类似
for i in range(10, 0, -1):
print(i)
# 打印结果:10-1
22.round()
将小数取整,如果后面加参数,可以保留多少位小数
print(round(3.1415)) # 打印结果:3
print(round(3.1415, 2)) # 打印结果:3.14
23.str()
把任何一个数据变成字符串
a = 89748
print(str(a))
a = [9, 8, 9, 61, 4, 6, 28, 6]
print(str(a)) # 打印结果:[9, 8, 9, 61, 4, 6, 28, 6]
24.type()
打印出变量的数据类型
a = [9, 8, 9, 61, 4, 6, 28, 6]
b = str(a) # 打印结果:[9, 8, 9, 61, 4, 6, 28, 6]
print(b)
print(type(b)) # 打印结果:<class 'str'>
25.zip()
将列表中的数据一一对应,如果超出则丢弃,不管是上面超出还是下面超出
a = ["iwbf", "op", "cf"]
b = ["girl", "man", "humu"]
for i in zip(a, b):
print(i)
# 打印结果:
# ('iwbf', 'girl')
# ('op', 'man')
# ('cf', 'humu')
26.filter()
将列表中的每一个元素交给第一个参数(函数)运行,若结果为真,则保留这个值
l = list(range(10))
def compare(x):
if x > 5:
return x
print(l)
for i in filter(compare, l):
print(i)