当前位置:首页>python>python核心基础语法(3)

python核心基础语法(3)

  • 2026-10-11 07:54:18
python核心基础语法(3)

python

书接上回,这次我们讲函数

函数

# def welcome():#     print("欢迎来到麻雀课堂")# welcome()

参数:参数可以让函数接收外部传入的数据,能让函数更具通用性和灵活性

def order(food):print(f"{food}很好吃")order("水煮肉")

关键字参数:函数调用时通过形参名 = 值的形式传递的参数,就是关键字参数。 关键字参数的优势是:不受顺序限制。

def order(food):print(f"{food}很好吃")order(food='水煮肉')

限制传参方式

前面只能用『位置参数』,*后面只能用『关键字参数』

def greet(name,/,gender,*,age):print(f'{name}是{gender}年龄{age}')greet("李易峰",'男',age=12)greet("李易峰",gender='男',age=12)

默认值

def greet(name,/,gender,*,age=12):print(f'{name}是{gender}年龄{age}')greet("李易峰",'男',age=13)greet("李易峰",gender='男',age=12)

可变参数

在定义函数时,如果不确定会传入多少个参数,那就可以使用可变参数,具体写法有两种:

使用*形参名来接收任意数量的『位置参数』,多个位置参数最终会被打包成一个『元组』。

使用**形参名来接收任意数量的『关键字参数』,多个关键字参数最终会被打包成一个『字典』。

可变位置参数』和『可变关键字参数』,可以同时使用,但必须要先写『可变位置参数』。

# 定义函数(同时使用:可变位置参数、可变关键字参数)def test3(a,b,*args,c="麻雀",**kwargs):print(a,b,c,args,kwargs)//a b c ('抽烟', '惊蛰', 'c') {'name': '以父之名'}test3("a","b","抽烟","惊蛰",'c',c='c',name="以父之名")

None是一个空的字面量

msg=Noneprint(type(msg)) #<class 'NoneType'>print(bool(msg)) # falseif not msg:print('你好')

返回值

什么是返回值:函数执行完毕后,会把执行结果交给调用者,这个执行结果就是函数的返回值。

def add(n1,n2):return n1+n2result= add(100,100)print(result)

全局作用域vs局部作用域

  1. 全局作用域:整个.py文件最外层的范围,就是全局作用域。
  2. 全局变量:写在全局作用域中的变量,就叫:全局变量,全局变量在整个程序中都可以访问。

global关键字

用于将变量声明为全局变量

a=100b=200def count():    global c    c=100print(c) //100count()print(a,b,c) //100 200 100

测试

请说出如下代码的输出结果,如果全部正确说明这节知识点你掌握了

a = 100b = 200def test():    c = '麻雀'    d = '你好啊'    global a    a = 300print('函数中的打印(a)', a)#300print('函数中的打印(b)', b)#200print('函数中的打印(c)', c)#麻雀print('函数中的打印(d)', d)#你好啊test()print('***************')print('全局的打印(a)', a)#300print('全局的打印(b)', b)#200# print(c) #未定义# print(d) #未定义# 局部作用域 和 局部变量,会在函数调用时创建,在函数执行结束后自动销毁def test2():    m = 100    m += 1print(f'我是test2函数中打印的m:{m}')test2()#101test2()#101test2()#101# 全局作用域 与 全局变量,会在程序开始时创建,在程序结束后销毁n = 100def test3():    global n    n += 1print(f'我是test3函数中打印的n:{n}')test3()#101test3()#102test3()#103print(n)#103

函数嵌套

在一个函数执行的过程中,调用了另外一个函数

def test1(name,msg):print(name)    test2(msg)def test2(msg):print(msg)test1("张若昀","千里江山图杀青")

递归调用

顾名思义:函数自己调自己

def welcome(n):print(f'你好啊{n}')if n > 1:        welcome(n - 1)# 调用函数welcome(5)

#使用递归求阶乘

#使用递归求阶乘def factorial(num):if num==0:return 1else:return num*factorial(num-1)print(factorial(5))

案例:

完成一个健身挑战赛程序

输入每天的运动量,如果达成目标,则挑战成功,否则失败

def experience(day,goal):    all = 0for n in range(day):        num = int(input(f"请输入第{n+1}天的数量"))        all += num    avg = all / day    res=""if all>goal: res='挑战成功'else:res='挑战失败'print(f'{day}天总数{all},平均{avg}')print(f'{res}')experience(7,40)

练习: 定义一个函数,根据传入的分数,计算对应的分数等级并返回。

  • 分数 >= 90:A
  • 分数 >= 75:B
  • 分数 >= 60:C
  • 分数 < 60:D
def setscore():    score=int(input("请输入成绩"))if score>=90:return'A'elif score>=75:return'B'elif score>=60:return'C'else:return'D'print(setscore())

需求2:定义一个函数,用于判断一个字符串是否是回文串,返回bool值。 把字符串反转,如果和原字符串相同,就是回文串。(如:"level","radar","黄山落叶松叶落山黄")

def ishuiwen(str):    str_list=list(str)    str_list.reverse()    str_new="".join(str_list)if str_new==str:return"是回文"else:return"不是回文"print(ishuiwen("level"))print(ishuiwen("liyifeng"))

需求3:定义一个函数:完成时间转换功能,将传入的秒转换为小时、分钟、秒。

def settime(seconds):if(seconds<60):return seconds+'秒'elif(seconds<3600):return f'{seconds//60}分种{seconds%60}秒'else:        hours=seconds//3600        minMax=seconds%3600        minutes=0        second=0if(minMax>60):            minutes=minMax//60            second=minMax%60return f'{hours}小时{minutes}分钟{second}秒'print(settime(3700))

定义一个函数:根据传入的三角形三个边的边长,判定三角形的类型(等边、等腰、普通,或者不能构成三角形)。

def trangle(a, b, c):if (a + b > c and a + c > b and b + c > a):if (a == b == c):return"等边三角形"elif ((a == b or a == c or b == c)):return"等腰三角形"elif (a + b > c and a + c > b and b + c > a):return"普通三角形"else:return"不是三角形"print(trangle(3, 4, 5))print(trangle(3, 3, 5))print(trangle(3, 4, 6))print(trangle(3, 5, 6))print(trangle(3, 4, 7))print(trangle(8, 8, 8))

上面的练习都会做了就代表今天的函数知识过关了~

只要上面的练习都自己做出来了,这节课就学会了,下期再见~
接下来会更新四个商城项目,接入AI和支付,商城写到了订单,各位稍安勿躁,再等等
需要了解服务器和域名的购买以及返佣政策的可以找我,我有朋友做这方面对这些比较了解。
需要源码联系
需要源码可以加群,第一个是微信群,第二个是QQ群
微信群
QQ群

最新文章

随机文章