5.1.函数编程

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)

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值