python函数

一、函数

  • 什么叫做函数

  • 就是将一个代码块封装成一个函数,然后重复进行调用的话

1、函数的定义和调用

  • def 关键字定义函数

  • 函数名 就是调用了,必须调用了函数,才能起作用

  • 先定义后调用

def get_sum(n):
    result=0
    for i in range(1,n+1):
        result+=i
    print(f"和为{result}")

get_sum(100)


2、函数的参数

1、位置参数

  • 就是调用函数的时候,传入参数,必须按照一定的位置进行传入

  • 按照一定的顺序进行传入,有几个形参就传入几个参数

def user_name(name, age):
    print(f"我的名字是{name},年龄是{age}")

user_name("qq", 11)

2、关键字参数

  • 顺序可以不一样
def user_name(name, age):
    print(f"我的名字是{name},年龄是{age}")

user_name(age=10,name="rrr")
  • 位置参数和关键字传参可以一起使用,但是这个位置参数必须放在最前面,关键字参数是在后面的

3、默认值参数

  • 在函数定义的时候,直接对形参进行赋值了

  • 如果在调用的时候不赋值的话,将使用默认值

  • 如果赋值了的话,则使用传递的值

# 没有传参
def user_name(name, age=18):
    print(f"我的名字是{name},年龄是{age}")

user_name("qqq")

4、可变参数

1、个数可变的位置参数

  • 参数是一个元组

  • 也就是这个位置参数的参数是可变的,取决于调用的时候传入了多少个

def fun(*area):  # *变量名 是一个元组,可以传入多个参数
    print(type(area))
    for i in area:
        print(i)

fun(1,2,3)     # 传入到元组中去
fun([1,2,3])   # 会将整个列表作为一个元素传入到元组中,相当于是一个元素
fun(*[1,2,3])  # 在调用的时候 * 会将列表中的每一个元素作为一个参数传入到元组中去

# 输出结果为
<class 'tuple'>
1
2
3
<class 'tuple'>
[1, 2, 3]
<class 'tuple'>
1
2
3

2、个数可变的关键字参数

  • 传入到是一个字典存储

  • 关键字参数也是可变的,取决于调用的时候能传入多少个

def fun(**keywords):
    print(type(keywords))
    for key,value in keywords.items():
        print(key,"---",value)

fun(name="qq",age="18")  # 接受的是一个键值对的方式
d={"name":"qq","age":"18"}  # 如果想要传入一个字典的话,需要**来进行解析
# fun(d)  # 不使用的话,会报错
fun(**d)

3、函数的返回值

  • return 返回值,返回到函数的调用的地方

  • 没有return的话,函数的返回值为none

def fun(a,b):
    s=a+b
    return s  # 这个s返回到函数调用的地方

result=fun(1,3) # 返回到函数调用的地方,赋值给了result变量
print(result)
  • 可以返回多个值,但是一个变量接收的话,就是一个元组类型来存储多个返回值
def fun(n):
    ji_shu=0
    ou_shu=0
    sum_shu=0
    for i in range(1,n+1):

        if i%2 !=0:
            ji_shu+=i
        else:
            ou_shu+=i
        sum_shu+=i
    return  ji_shu,ou_shu,sum_shu
result=fun(10)
print(type(result))
print(result)

# 输出结果为
<class 'tuple'>
(25, 30, 55)

4、变量的作用域

1、局部变量

  • 在函数内部定义的变量

  • 仅在函数的内部,函数执行结束后,这个局部变量的生命周期也会结束

  • 当局部变量和全局变量名字一样的时,局部变量的优先级高

def fun(a,b):
    s=a+b
    return  s

result = fun(1,2)  # 函数调用后,这个局部变量会被销毁

print(result)

2、全局变量

  • 在函数外面定义的变量,或者是在函数内部使用global关键字定义的变量

  • 作用于整个程序,程序结束后,生命周期结束

  • 全局都有用,可以在函数的内部参与运算

  • 在函数内部使用global 变量,这个变量就是全局变量

s=100
def fun(a,b):
    sum=s+a+b
    return  sum

result = fun(1,2)

print(result)

# 输出结果为
103


# 当局部变量和全局变量名字一样时
s=100
def fun(a,b):
    s=200  # 局部变量的优先级高于全局变量,在名字相同的时候
    sum=s+a+b
    return  sum

result = fun(1,2)

print(result)

# 输出结果为
203

# 函数内部 global关键字定义变量

def fun(a,b):
    global s  # s这个变量为全局变量
    s=200  # 对其进行赋值
    sum=s+a+b
    return  sum

result = fun(1,2)

print(result)
print(s)
s=100  # 在外面可以进行修改这个变量的值
print(s)

# 输出结果为

203
200
100

5、匿名函数

  • lambda函数

  • 是指没有名字的函数,这个函数只能使用一次

  • 一般是在函数的函数体只有一句代码且只有一个返回值的时候,可以使用匿名函数来简化

def fun(a,b):
    return a+b
result=fun(1,2)
print(result)

# 上面代码可以简化成这样的,也就是只有一个返回值的时候使用,lamba匿名函数

s=lambda a,b:a+b  # a,b是参数,: 后面是操作 s是函数名
print(type(s))
print(s(1,2))  # 调用函数名s 



la = [1,2,3,4,5]
for i in range(len(la)):
    result = lambda x:x[i]  # 传入是一个列表
    s = result(la)
    print(s)

#输出结果为

1
2
3
4
5


student_scores=[
    {"name":"qq","score":100},
    {"name":"oo","score":90},
    {"name":"ww","score":95},
]


student_scores.sort(key=lambda x:x.get("score"),reverse=True)
print(student_scores)

# 按照这个key的查找来进行排序,降序的方式来查找
# x 是字典,x.get 取出这些成绩,按照这个成绩来进行排序

# key=分数(函数每一个调用的)

# 临时用的函数,直接使用,不需要函数名

# 字典是可变的数据类型

# 输出结果为
[{'name': 'qq', 'score': 100}, {'name': 'ww', 'score': 95}, {'name': 'oo', 'score': 90}]


6、递归的操作

  • 自己调用自己

  • 有一个终止条件

# 计算一个数的阶乘

def fun(n):
    if n==1:  # 终止条件
        return 1
    else:
      return  n*fun(n-1) # 自己调用自己

print(fun(4))



  • 斐波那列数列

  • 1 1 2 3, 前2项的和等于后面一项

二、内置函数

  • bool函数,所有空的数据类型都是false

str函数

# 列表转换为字符串
lst= [1,2,3]
s= str(lst)
print(s)
print(type(s))

# 输出结果为
[1, 2, 3]
<class 'str'>


int函数

# 将字符串和float转换为int



list函数

# 将字符串转换为列表

s2= "abc"
print(list(s2))

# 输出结果
['a', 'b', 'c']

数学函数

img

迭代器操作函数

img

总结

  • 位置参数和关键字参数同时存在的时候,位置参数是在最前面的,关键字参数是在后面的

  • 迭代器对象,就是可以使用索引的数据类型就是迭代对象了

案例

1、10个元素,使用函数求出这个列表中元素的最大值

2、编写函数实现提取字符串中的数字并求出和

  • 输入一个字符串,有数字和字母的

3、实现字符串中的字母大小写转换

  • 小写字母转换成大写

  • 大写字母转换成小写

4、

posted @ 2025-09-17 15:54  乔的港口  阅读(11)  评论(0)    收藏  举报