def
return
# 计算三个人的最终成绩(平时分占30%,期末占70%)s1_final = 80 * 0.3 + 85 * 0.7s2_final = 90 * 0.3 + 75 * 0.7s3_final = 70 * 0.3 + 95 * 0.7# 如果比例改成40%和60%?要改三处!容易漏改出错。
deffinal_score(daily, exam):return daily * 0.3 + exam * 0.7s1 = final_score(80, 85)s2 = final_score(90, 75)s3 = final_score(70, 95)# 比例改了?只改函数体一处即可!
def 函数名(参数1, 参数2, ...):"""文档字符串(可选,但强烈建议写)""" 函数体return 返回值
defgreet():"""打印欢迎语""" print("Hello, Python!")# 调用greet() # Hello, Python!greet() # Hello, Python!
defgreet_name(name):"""向指定的人打招呼""" print(f"Hello, {name}!")greet_name("小王") # Hello, 小王!greet_name("小李") # Hello, 小李!
defadd(a, b):"""返回两数之和"""return a + bresult = add(3, 5)print(result) # 8print(add(10, 20)) # 30
defintroduce(name, age):# name, age 是形参(形式参数,占位符) print(f"我叫{name},今年{age}岁")introduce("小王", 18) # "小王", 18 是实参(实际参数,真实数据)
defpower(base, exp):return base ** expprint(power(2, 3)) # 8 (2的3次方)print(power(3, 2)) # 9 (3的2次方) 顺序很重要!
defintroduce(name, age, city): print(f"我叫{name},{age}岁,来自{city}")introduce(name="小王", age=18, city="北京") # 正常introduce(city="上海", name="小李", age=20) # 顺序反了也OK!introduce("小张", city="广州", age=19) # 混用:位置参数在前,关键字在后
defcheck_age(age):if age < 0:return"年龄不能为负数"# 执行到这里,函数直接结束if age >= 18:return"成年人"return"未成年人"print(check_age(-5)) # 年龄不能为负数print(check_age(20)) # 成年人
None
defsay_hi(): print("Hi!")result = say_hi() # 打印 Hi!print(result) # Noneprint(type(result)) # <class 'NoneType'>
defdivmod_custom(a, b): quotient = a // b remainder = a % breturn quotient, remainder # 返回一个元组 (商, 余数)q, r = divmod_custom(17, 5) # 元组解包print(q) # 3print(r) # 2# 也可以整体接收result = divmod_custom(17, 5)print(result) # (3, 5)
defcalculate_bmi(weight, height):""" 计算BMI指数 :param weight: 体重,单位kg :param height: 身高,单位m :return: BMI值,保留1位小数 """ bmi = weight / height ** 2return round(bmi, 1)# 查看文档print(calculate_bmi.__doc__)# 或用 help()help(calculate_bmi)
defgreet(): print("Hello")greet # 这只是引用函数对象,不会执行!greet() # ✅ 这才是调用
defadd(a, b):return a + b# add(1) # TypeError: add() missing 1 required positional argument# add(1, 2, 3) # TypeError: add() takes 2 positional arguments but 3 were given
deftry_change(x): x = 100# 这只是改了局部变量xnum = 10try_change(num)print(num) # 10,没变
celsius_to_fahrenheit(c)
defcelsius_to_fahrenheit(c):return c * 9 / 5 + 32print(celsius_to_fahrenheit(0)) # 32.0print(celsius_to_fahrenheit(100)) # 212.0
check_password(pwd)
defcheck_password(pwd):if len(pwd) >= 8:return"强"elif len(pwd) >= 6:return"中"else:return"弱"print(check_password("abc123")) # 中print(check_password("abc")) # 弱
average(nums)
defaverage(nums):ifnot nums:return0return sum(nums) / len(nums)print(average([85, 90, 78])) # 84.3333print(average([])) # 0
()