Skip to main content

python学习之路☞17.function parameter and return.md

python学习之路☞17.function parameter and return

#python, #function, #parameter, #return, #positional, #keyword, #default,
函数代码练习

'''
函数
定义:一个封装了可重复使用代码的代码块,用于完成特定任务。函数可以接收输入参数,执行代码,并返回结果。
参数:
   形参:在定义函数时定义的参数。
   实参:在调用函数时传递给形参的参数。
传参方式:
   位置参数
      定义:按照位置传递的参数。
      示例:
      ```python
      def add(a, b):
         return a + b
      add(1, 2)  # 1 和 2 是位置参数
      ```

   关键字参数
      定义:通过参数名传递的参数。
      示例:
      ```python
      def greet(name, message):
         print(f"{message}, {name}!")
      greet(name="Alice", message="Hello")  # name 和 message 是关键字参数
      ```

   默认值参数
      定义:具有默认值的参数。
      示例:
      ```python
      def greet(name, message="Hello"):
         print(f"{message}, {name}!")
      greet("Alice")  # 使用默认值参数 message="Hello"
      ```
※ 注意:带有默认值的形参变量必须放在所有不带默认值的形参变量之后

return:用于返回函数的结果并结束函数,也可用于结束循环
      示例1 return 返回值可以返回列表、字典和元组等:
      ```python
      def process():
         return 1, "hello", [3, 4, 5]
      result = process()
      print(result)  # 输出:(1, 'hello', [3, 4, 5])
      ```
      示例2 结束循环和函数:
      ```python
      def find_first_even(numbers):
         for number in numbers:
            if number % 2 == 0:
                  return number  # 结束循环和函数
         return None  # 如果没有找到偶数,返回 None

      result = find_first_even([1, 3, 5, 8, 9])
      print(result)  # 输出:8
      ```
※ 注意:
    1. return 看似是多个变量,但最终会返回到元组类型变量中,相当于打包
    2. return 不仅用于返回值,还可以结束函数的执行。如果在函数内部的循环中使用 return 它会立即结束函数和循环的执行,而 break 只会结束循环,这是主要区别 
'''

# 参数 位置传参
print('----------------参数 位置传参-----------------')
"""
function1函数
作用:用来测试位置传参,并将传参打印出来
    num1: 任意类型形参变量
    num2: 任意类型形参变量
    num3: 任意类型形参变量
"""
def function1(num1, num2, num3):  # 定义函数,形参接收变量
    print(num1, num2, num3)  # 代码块执行


num1, num2, num3 = 1, '你好', '世界'  # 变量赋值
function1(num1, num2, num3)  # 实参位置传参

# 参数 关键字传参
print('----------------参数 关键字传参-----------------')
"""
function2函数
作用:用来测试关键字传参,并将传参打印出来
    num1: 任意类型形参变量
    num2: 任意类型形参变量
    num3: 任意类型形参变量
"""
def function2(num1, num2, num3):  # 定义函数,形参接收变量
    print(num1, num2, num3)  # 代码块执行


function2(num3='吗?', num2='你好', num1=2)  # 实参关键字传参


# 参数 默认值传参
print('----------------参数 默认值传参-----------------')
"""
function3函数
作用:用来测试默认值传参,并将传参打印出来
    num1: 任意类型形参变量
    num2: 任意类型形参变量
    num3='默认值发作': 任意类型,带有默认值的形参变量,值是 "默认值发作"
"""
def function3(num1, num2, num3='默认值发作'):  # 定义函数,形参接收变量
    print(num1, num2, num3)  # 代码块执行


function3(3, '你好')  # 实参位置+默认值传参
function3(num2='你好', num1=3)  # 实参关键字+默认值传参
function3(num3='吗?', num2='你好', num1=3)  # 实参关键字传参+默认值传参,默认值覆盖

# return
print('----------------return-----------------')
"""
function4函数
作用:用来测试 return 并返回数据
    num0: 浮点类型,用于判断并执行不同语句块
    num1: 任意类型形参变量
    num2: 任意类型形参变量
    num3: 任意类型形参变量
"""
def function4(num0, num1, num2, num3):  # 定义函数,形参接收变量
    if num0 == 4.2:
        return [num1, num2, num3]  # return 代码块执行,返回列表
    elif num0 == 4.1:
        return {num0: num1, num2: num2, num3: num3}  # return 代码块执行,返回字典
    elif num0 == 4.3:
        return num1, num2, num3  # return 代码块执行,返回并默认打包为元组
    else:
        line_str = ''
        for i in range(3):
            line_str += str(i)+' '
            if i == 2:  # 判断循环结束条件
                return line_str, '->', num1, num2, num3, '执行完毕结束循环和函数' # return 代码块执行,结束循环和函数,返回提示输出结果

return_variable = function4(4.1, 4, '你好', '世界@_@')  # 实参位置传参并赋值
print(return_variable, type(return_variable))  # 打印返回结果

return_variable = function4(4.2, 4, '你好', '世界?')  # 实参位置传参并赋值
print(return_variable, type(return_variable))  # 打印返回结果

return_variable = function4(4.3, 4, '你好', '世界!')  # 实参位置传参并赋值
print(return_variable, type(return_variable))  # 打印返回结果

return_variable = function4(4.4, 4, '你好', '世界!')  # 实参位置传参并赋值
print(return_variable, type(return_variable))  # 打印返回结果

参考

Defining Functions — Python 3 docs
Python Functions — python.land

Comments

Popular posts from this blog

python学习之路☞9.Comment, Primitive Data Types and Branch Conditional Structure if ... else ...

python学习之路☞9.Comment, Primitive Data Types and Branch / Conditional Structure if … else … #python,#Comment,#data type,#branch/conditional structure,#input(),#int,#float,#complex,#boolean,#if … else …, 注释(Comment) 内置函数input()(input() Function) 基本数据类型整数(Primitive Data Types int) 基本数据类型小数(Primitive Data Types float) 基本数据类型复数(Primitive Data Types complex) 基本数据类型布尔(Primitive Data Types boolean) 分支结构if … else …(Branch / Conditional Structure if … else …) 参考 Comment ''' 注释: 给人看的说明文字,Python 解释器完全忽略 要点 # 让该行 # 之后的内容全部失效,解释器跳过。 行尾注释与代码在同一行,通常用于简短说明。 docstring(三引号字符串)放在函数/类/模块第一行时,可被 help() 和文档工具读取,有特殊意义。 好的注释解释"为什么",而不是"做了什么"(代码本身已经说明了做了什么): # ✗ i = i + 1 # i 加 1 # ✓ i += 1 # 跳过表头行 ''' # 这是单行注释,# 号后面全部忽略 x = 10 # 行尾注释,代码照常执行 # 多行注释:每行都加 # # 第一行说明 # 第二行说明 # 第三行说明 """ 这是多行字符串(docstring) 虽然常被当注释用, 但本质是字符串字面量,不是注释。 通常用于函数/类的文档说明。 """ def add ( a , b ) : """返回 a 与 b 的和。"...

OnePlus 7 Pro LineageOS 23.2 Android 16 构建与内核 Docker 支持并在 Termux 上实现容器运行全流程指南

OnePlus 7 Pro LineageOS 23.2 Android 16 构建与内核 Docker 支持并在 Termux 上实现容器运行全流程指南 OnePlus 7 Pro LineageOS 23.2 Android 16 构建与内核 Docker 支持并在 Termux 上实现容器运行全流程指南 #docker,#linux,#termux,#android,#kernel,#lineageos,#oneplus,#git,#android16, gmkm6 x86_64 主机配置环境 安装配置 docker 防止污染环境 更新 docker 插件 compose 更新 docker 插件 buildx 创建编译容器 容器内编译镜像刷机 安装magisk,termux获取root termux检测内核docker缺失功能 根据内核docker缺失功能编译boot.img并获取root 开启全部必要扩展功能 下面的步骤是开启大部分非必要扩展功能 修补内核代码方案 下面的步骤是开启剩余部分非必要扩展功能 修补内核 安装测试运行 termux docker 其它关于termux的docker-compose和docker-buildx更新 安装用于校验的工具 开机自启动和容器化部署使用例子 Android16尝试开启KVM失败的例子(不用试了,唉) 内核修补 参考&感谢 gmkm6 x86_64 主机配置环境 注意,获取自己的手机型号代号,这一点很重要在后续的命令中都要用到 比如我的手机 oneplus7pro 是 guacamole 也可以尝试通过命令获取获取,但是我不知道是不是所有设备都是这样获取的 adb shell getprop ro.boot.project_codename 最重要的是,一定要找好固件包,免得变成砖头,有线刷包就可以怎么折腾都不怕 听我说,编译内核是一件很枯燥的核对过程,这个过程需要考虑到各项之间的互相依赖和冲突并以此作出取舍 这不是个简单的过程,这里只展示具有逻辑的依赖项,需要耐心和不断的试错总结 不得不说设计的内核是一件件精美的艺术品,从某种意义上来讲,万事万物皆为艺术,而探索艺术本身是...

OnePlus 7 Pro LineageOS 19.1 构建与内核 Docker 支持并在 Termux 上实现容器运行全流程指南

OnePlus 7 Pro LineageOS 19.1 构建与内核 Docker 支持并在 Termux 上实现容器运行全流程指南 OnePlus 7 Pro LineageOS 19.1 构建与内核 Docker 支持并在 Termux 上实现容器运行全流程指南 #docker,#linux,#termux,#android,#kernel,#lineageos,#oneplus,#git, gmkm6 x86_64 主机配置环境 安装配置 docker 防止污染环境 更新 docker 插件 compose 更新 docker 插件 buildx 创建编译容器 容器内编译镜像刷机 安装magisk,termux获取root termux检测内核docker缺失功能 根据内核docker缺失功能编译boot.img并获取root 安装测试运行 termux docker 其它关于termux的docker-compose和docker-buildx更新 参考&感谢 注意,获取自己的手机型号代号,这一点很重要在后续的命令中都要用到 比如我的手机 oneplus7pro 是 guacamole 也可以尝试通过命令获取获取,但是我不知道是不是所有设备都是这样获取的 adb shell getprop ro.boot.project_codename 最重要的是,一定要找好固件包,免得变成砖头,有线刷包就可以怎么折腾都不怕 最近 OP7P 设备型号是 guacamole 手机刷了 GM1910_11_H.40 即 android 12 https://gauss-componentotacostmanual-sg.allawnofs.com/remove-d74c973c240292cb011317bb07f424a2/component-ota/23/03/28/6d4604798d27450e8de05671d5effbae.zip 内核版本 4.14.180-perf+ 发现 github.com/OnePlusOSS 官方有相关的开放残缺的内核源码,但缺失了很多代码配置 https://github.com/OnePlusOSS/android_kernel_o...