当前位置: 首页 > news >正文

Day26 函数1

函数的基本写法

return的用法

什么时候用return

def add_features(feature1, feature2):total = feature1 + feature2print(f"{feature1} + {feature2} = {total}")add_features(10, 25)
#或def add_features(feature1, feature2):total = feature1 + feature2return total
print(add_features(10, 25))
#但def add_features(feature1, feature2):total = feature1 + feature2return total  # 返回结果,供其他代码使用sum_result = add_features(10, 25)
double_sum = sum_result * 2  # 基于返回值计算新结果
print(double_sum)  # 输出:70
# 正确做法:用 return 返回结果
def square(num):return num * num  # 返回计算结果# 用返回值做后续操作
result = square(3)
total = result + 5  # 用平方结果(9)加5
print(total)  # 输出:14# 错误尝试:用 print 代替 return
def square_with_print(num):print(num * num)  # 只打印,不返回# 调用函数时,print 只是在屏幕上显示结果,不会把值交给变量
result = square_with_print(3)  # 屏幕上会显示9,但 result 其实是 None
total = result + 5  # 报错!因为 None 不能和数字相加
# 正确做法:用 print 展示信息
def show_message():print("程序执行完毕!")  # 直接显示提示show_message()  # 输出:程序执行完毕!# 不合适的做法:用 return 代替 print
def show_message_with_return():return "程序执行完毕!"  # 返回字符串,但不会自动显示show_message_with_return()  # 调用后什么都不显示,因为 return 不会打印
  • 想让结果被其他代码使用 → 必须用 return
  • 只想在屏幕上看一眼结果 → 用 print
  • 两者经常配合使用(先 return 结果,再 print 变量查看)
return 的作用print 的作用
把结果 “交给调用者”,供后续代码使用把内容 “显示在屏幕上”,仅用于查看
函数遇到 return 会立刻结束print 执行后,函数会继续运行后面的代码
不主动显示结果(需要打印变量才能看到)直接在屏幕上显示结果

变量作用域

函数参数类型

位置参数:传递参数时不指定参数名,直接按照函数定义时的参数顺序传递值。
函数会根据参数的位置顺序来匹配值。如果顺序错了,结果也会出错

def describe_pet(animal_type, pet_name):print(f"我有一只 {animal_type},名字叫 {pet_name}。")# 位置参数:按顺序传递,第一个值给 animal_type,第二个给 pet_name
describe_pet("猫", "咪咪")  # 输出:我有一只 猫,名字叫 咪咪。

关键字参数:传递参数时明确指定参数名(格式:参数名=值),不需要严格按照顺序传递。
函数会根据参数名来匹配值,不用担心顺序错误。

def describe_pet(animal_type, pet_name):print(f"我有一只 {animal_type},名字叫 {pet_name}。")# 关键字参数:指定参数名,顺序可以调换
describe_pet(animal_type="狗", pet_name="旺财")  # 输出:我有一只 狗,名字叫 旺财。
describe_pet(pet_name="旺财", animal_type="狗")  # 输出相同,顺序不影响

默认参数:

收集位置参数:

收集关键字参数:

题目1:计算圆的面积

  • 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 = π * radius² (可以使用 math.pi 作为 π 的值)
  • 要求:函数接收一个位置参数 radius。计算半径为5、0、-1时候的面积
  • 注意点:可以采取try-except 使函数变得更加稳健,如果传入的半径为负数,函数应该返回 0 (或者可以考虑引发一个ValueError,但为了简单起见,先返回0)。

题目2:计算矩形的面积

  • 任务: 编写一个名为 calculate_rectangle_area 的函数,该函数接收矩形的长度 length 和宽度 width 作为参数,并返回矩形的面积。
  • 公式: 矩形面积 = length * width
  • 要求:函数接收两个位置参数 length 和 width。
    • 函数返回计算得到的面积。
    • 如果长度或宽度为负数,函数应该返回 0。

题目3:计算任意数量数字的平均值

  • 任务: 编写一个名为 calculate_average 的函数,该函数可以接收任意数量的数字作为参数(引入可变位置参数 (*args)),并返回它们的平均值。
  • 要求:使用 *args 来接收所有传入的数字。
    • 如果没有任何数字传入,函数应该返回 0。
    • 函数返回计算得到的平均值。

题目4:打印用户信息

  • 任务: 编写一个名为 print_user_info 的函数,该函数接收一个必需的参数 user_id,以及任意数量的额外用户信息(作为关键字参数)。
  • 要求:
    • user_id 是一个必需的位置参数。
    • 使用**kwargs 来接收额外的用户信息。
    • 函数打印出用户ID,然后逐行打印所有提供的额外信息(键和值)。
    • 函数不需要返回值

题目5:格式化几何图形描述

  • 任务: 编写一个名为 describe_shape 的函数,该函数接收图形的名称 shape_name (必需),一个可选的 color (默认 “black”),以及任意数量的描述该图形尺寸的关键字参数 (例如 radius=5 对于圆,length=10, width=4 对于矩形)。
  • 要求:shape_name 是必需的位置参数。
    • color 是一个可选参数,默认值为 “black”
    • 使用 **kwargs 收集描述尺寸的参数。
    • 函数返回一个描述字符串,格式如下:
    • “A [color] [shape_name] with dimensions: [dim1_name]=[dim1_value], [dim2_name]=[dim2_value], …”如果 **kwargs 为空,则尺寸部分为 “with no specific dimensions.”

文章转载自:

http://0Ho6GDpy.yLdgw.cn
http://Qotrv0eu.yLdgw.cn
http://62twtP5N.yLdgw.cn
http://32DHmcb9.yLdgw.cn
http://vaSyHm6A.yLdgw.cn
http://lUZSwj1e.yLdgw.cn
http://vnV2n7XR.yLdgw.cn
http://ctI36VbL.yLdgw.cn
http://fRlXCiAn.yLdgw.cn
http://u4WIDFkZ.yLdgw.cn
http://30lWdlM3.yLdgw.cn
http://8BnivAeZ.yLdgw.cn
http://Uj0UJd2I.yLdgw.cn
http://Jf0jWPC2.yLdgw.cn
http://c9cZ0poe.yLdgw.cn
http://urttVdkE.yLdgw.cn
http://x2FIUBnd.yLdgw.cn
http://4vgsi5L8.yLdgw.cn
http://vaft0Iit.yLdgw.cn
http://qhECEA02.yLdgw.cn
http://p2H9Oikv.yLdgw.cn
http://sELKmndu.yLdgw.cn
http://dqVLkpjI.yLdgw.cn
http://MBOEjmjB.yLdgw.cn
http://NVzXztHC.yLdgw.cn
http://xggXXet0.yLdgw.cn
http://5PDArbqc.yLdgw.cn
http://8Xy8V8Ns.yLdgw.cn
http://aHYiJXUV.yLdgw.cn
http://GlO2Jnt6.yLdgw.cn
http://www.dtcms.com/a/369151.html

相关文章:

  • Hutool AI模块已经上线
  • 从头开始学习AI:第四章 - 逻辑回归与分类问题
  • 优利德绝缘电阻测试仪:从原理、操作到安全应用的完全指南
  • GCC工具链使用学习笔记
  • 【前端教程】JavaScript 实现图片鼠标悬停切换效果与==和=的区别
  • 8. Mono与IL2Cpp简介
  • LLM与数据工程的融合:衡石Data Agent的语义层与Agent框架设计
  • ESP-IDF串口中断接收
  • git命令解析
  • 如何从chrome中获取会话id
  • Linux/UNIX系统编程手册笔记:进程组、会话、作业控制、优先级、调度、资源
  • HTML HTML基础(2)
  • Git 同步最新代码:用 stash -> pull -> pop 安全同步更新
  • java,通过SqlSessionFactory实现动态表明的插入和查询(适用于一个版本一个表的场景)
  • 男人怕老婆:家庭幸福的密码与社会文明的缩影?
  • 基于单片机的六足机器人控制系统设计
  • watchEffect 与 watch的区别
  • 怎么获取Nano Banana的APK Key?
  • proxmox8升级到proxmox9
  • Karmada v1.15 版本发布
  • AI在目前会议直播系统中应用
  • 【C++】 priority_queue 容器模拟实现解析
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(二十六)windows平台运行时隐藏控制台
  • leetcode 6 Z字形变化
  • 《失落之魂》M站评分仅40?国产动作类游戏究竟何去何从?
  • Day36 IO多路复用技术
  • [论文阅读] 人工智能 + 软件工程 | 当ISO 26262遇上AI:电动车安全标准的新玩法
  • 黄金上门回收小程序开发
  • 前端API请求封装
  • 中国生成式引擎优化(GEO)市场分析:领先企业格局与未来趋势分析