python编程 函数的定义、调用

目录

一:函数的定义 & 函数的调用

二:py脚本名 即为模块名称 

三:脚本程序主入口

四:函数的形参 & 函数的实参

五:必须参数、默认值参数、关键字参数、不定长参数


一:函数的定义 & 函数的调用

py脚本,运行程序,从上至下,执行

因此必须严格要求:函数要先定义、后调用 

"""
def 函数名(形参列表):
    代码块
"""

demo_function.py 

# 函数定义
def isOdd(num):
    print(num)


if __name__ == '__main__':  # 程序运行
    isOdd(10)               # 函数调用

输出结果:

10

二:py脚本名 即为模块名称 

每写一个py脚本,都可以称之为一个模块

py脚本的名称就是模块名称

可以先新建一个demo_test.py,

demo_test.py中再引用demo_function模块 

# 从模块中引用所有的内容
from demo_function import *  # 模块

isOdd(10)

输出结果:

10

三:脚本程序主入口

在__name__中(模块名称的内置写法)的代码

只会在当前脚本中调用 引用是不会执行的

if __name__ == '__main__':  # 程序运行
    # 写在此条件下的代码,只会在当前脚本中调用
    isOdd(10)               # 函数调用

四:函数的形参 & 函数的实参

1 按值传递

 demo_function.py

def isOdd(num):
    num += 2  # 函数内部num改变
    print("函数内部的num = ", num)  # 函数内部的num


if __name__ == '__main__':
    # 程序主入口
    isOdd(10)

demo_test.py 

from demo_function import *  # 模块

num = 10
isOdd(num)  # 函数调用 实参
print("函数外部的num = ", num)  # 函数外部num不变

在demo_test.py 中运行

输出结果:

函数内部的num =  12
函数外部的num =  10

2 引用传递 

函数内部添加元素,函数外部也会添加函数

即函数内部改变,函数外部也改变

 demo_function.py 

def print_list(list1):
    list1.append(10)  # 添加一个元素10
    print("函数内部输出结果:", list1)


if __name__ == '__main__':
    # 程序主入口
    pass

demo_test.py  

from demo_function import *  # 模块

# 列表 定义
list1 = [1, 2, 3]
# 函数调用
print_list(list1)
print("函数外部输出结果:", list1)

 demo_test.py  中运行

输出结果:

函数内部输出结果: [1, 2, 3, 10]
函数外部输出结果: [1, 2, 3, 10]

五:必须参数、默认值参数、关键字参数、不定长参数

1 必须参数

一定要传参并且传参的形式要正确才可以

 以下示例均在demo_function.py  中测试运行

def isOdd(num):  # 必须参数
    num += 2
    print(num)


if __name__ == '__main__':
    # 程序主入口
    isOdd(10)  # 必须参数:一定要传参

输出结果:

12

2 默认值参数

没有传参时候,使用默认值参数

有传参时候,使用传参

# 默认值参数
def connect_fun(ip="127.0.0.1", port=1234, name="root", pwd="123456"):
    print("ip", ip, "ip连接成功")
    print("port", port, "端口连接成功")


if __name__ == '__main__':
    # 程序主入口
    connect_fun()

输出结果:没有传参,使用默认值参数

ip 127.0.0.1 ip连接成功
port 1234 端口连接成功

有传参时候,使用传参

connect_fun("192.168.123.123", 3306)

输出结果:

ip 192.168.123.123 ip连接成功
port 3306 端口连接成功

若是普通写法 一定要注意传参顺序

如果传参顺序打乱就可使用关键字参数

3 关键字参数 

可以不按照传参顺序,通过key键传参

def connect_fun(ip="127.0.0.1", port=1234, name="root", pwd="123456"):
    print("ip", ip, "ip连接成功")
    print("port", port, "端口连接成功")
    print("name", name, "用户连接成功")


if __name__ == '__main__':
    # 程序主入口
    # 关键字参数
    connect_fun(ip="192.168.123.123", name="crh", port=3306)

输出结果:

ip 192.168.123.123 ip连接成功
port 3306 端口连接成功
name crh 用户连接成功

4 不定长参数 

函数参数  使用*一个星号--元组tuple 接收函数传参中多出来的数据

def addUser(name, id, *edu):  # 教育经历*edu 多个教育添加到元组
    # 不定长参数 没有变量名的数据添加到tuple中
    print(name, id, edu)


if __name__ == '__main__':
    # 程序主入口
    # 一个*代表不定长参数,多出来的参数添加到tuple中
    addUser("lily", "350181200004141111", "洪塘小学", "福州三中", "福建师范大学")

输出结果:

lily 350181200004141111 ('洪塘小学', '福州三中', '福建师范大学')

不定长参数,元素求和 示例如下

def sum_fun(*argvs):  # 求和函数
    res = 0
    for item in argvs:
        res += item  #全部元素求和
    return res


if __name__ == '__main__':
    # 程序主入口
    # 不定长参数
    res = sum_fun(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    print(res)

输出结果:

55

不定长参数,求元素的平均值 示例如下

def avg_fun(*argvs):  # 平均数求值
    res = 0
    for item in argvs:
        res += item  # 先元素求和
    return res / len(argvs)  # 总和除以总长即平均


if __name__ == '__main__':
    # 程序主入口
    # 不定长参数 求平均
    res = avg_fun(1, 2, 3, 4, 5)
    print(res)

输出结果:

3.0

不定长参数

**两个星号 多出来的函数参数会以字典 dict 接收数据

def addUser(name, id, *edu, **info):
    # 不定长参数 *:多出来的参数添加到tuple中
    # **:多出来的参数添加到tuple中
    print(name, id, edu)
    print(info, type(info))


if __name__ == '__main__':
    # 程序主入口
    addUser("lily", "350181200004141111", "洪塘小学", "福州三中", "福建师范大学",
            hobby='dance',
            skill=['coding', 'swimming'])

输出结果:

lily 350181200004141111 ('洪塘小学', '福州三中', '福建师范大学')
{'hobby': 'dance', 'skill': ['coding', 'swimming']} <class 'dict'>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenruhan_QAQ_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值