Python函数

Python函数

概念:

函数:函数是指一段可以被另一段程序引用的代码或者程序
函数的定义: 代码块与函数def层级要有4个空格(缩进)

函数定义语法:

def name_list():
    print("代码块")
    return "success"

result = name_list()
print(result)

默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。


函数调用:

①通过函数名()调用
②通过类实例.函数名()调用

如下实例调用test()函数:

# 定义函数
def test(name):
    print(name)
    return
# 调用函数
test("Mr.c")

实例输出结果:

Mr.c


函数的参数:

1.在定义函数的时候,函数需要调用者给他的数据就叫参数
2.参数相当于占个坑,告诉你这里得传数据进来

*必须参数

*关键字参数

*默认参数

*不定长参数

  • 必须参数:

1.函数调用的时候一定要传的参数,不传就会报错
2.多个参数按顺序传递
3.可以传变量(保证变量已经定义好的),也可以直接传对应的数据

实例1:

# 函数调用的时候一定要传的参数,不传就会报错
def test_01(name,age):
    print("我的名字叫{},今年{}岁".format(name,age))
test_01("Mr.c")

实例1输出结果:

TypeError: test_01() missing 1 required positional argument: ‘age’

实例2:

# 多个参数按顺序传递   
def test_01(name,age):
    print("我的名字叫{},今年{}岁".format(name,age))
test_01(20,"Mr.c")

实例2输出结果:

我的名字叫20,今年Mr.c岁

  • 关键字参数:

1.通过关键字传递参数,直接给关键字赋值
2.传递参数不用考虑参数传递的顺序
3.参数传递的时候,关键字名称要和函数定义的一致

实例:

def test_01(age,name):
    print("我的名字叫{},今年{}岁".format(name,age))
age = 20
name = 'Mr.c'
test_01(age=age,name=name)

实例输出结果:

我的名字叫Mr.c,今年20岁

  • 默认参数:

1.在定义的时候就默认给一个值,函数调用的时候可以不传
2.如果默认参数传递了新的参数进去,就会使用传递进去的新参数
3.在传递默认参数的时候,建议使用关键字参数的传递方式
4.默认参数必须写在必传参数后面,不能放前面,会报错

实例1:

# 在定义的时候就默认给一个值,函数调用的时候可以不传
def test_01(name,age=20):
    print("我的名字叫{},今年{}岁".format(name,age))
name = "Mr.c"
test_01(name)

实例1输出结果:

我的名字叫Mr.c,今年20岁

实例2:

# 如果默认参数传递了新的参数进去,就会使用传递进去的新参数
def test_01(name,age=20):
    print("我的名字叫{},今年{}岁".format(name,age))
name = "Mr.c"
age = 23
test_01(name,age)

实例2输出结果:

我的名字叫Mr.c,今年23岁

  • 不定长参数:

1.函数定义的时候不确定需要传多少个参数,就用不定长参数
2.使用的时候要去掉 * 号
3.定义的时候*号后面的变量名称可以自定义,约定习惯上用 *args,**kwargs
4.不定长参数必须写在必传参数后面,不能放前面,会报错
5.*args,**kwargs 可以同时存在

实例:

def test_01(*args,**kwargs):
    # *args:接收多少个参数类型(test1,test2)
    # **kwargs:接收多少个参数{key:val,key2:val2}
    print("打印不定长参数:args=",args)
    for name in args:
        print(name)
    print("打印不定长参数:kwargs=", kwargs)
test_01("张三","李四","王五",age=10,age2=20,age3=30)

实例输出结果:

打印不定长参数:args= (‘张三’, ‘李四’, ‘王五’)
张三
李四
王五
打印不定长参数:kwargs= {‘age’: 10,‘age2’: 20, ‘age3’: 30}


return语句:

函数的返回值return关键字(return可写可不写)

①写了return 后面跟了值/变量,调用这个函数就会得到return后面的值
②return是函数运行结束的标识符
③如果不写return或者 写了return 但是后面不写值或者变量,默认返回None
④如果需要函数返回数据就可以写return后面,如果不需要函数返回任何数据可以不写

示例:

# 定义函数
def test(name):
    print(name)
# 调用函数
test("Mr.c")

变量作用域:

局部变量:函数内部定义的变量–只能在函数内部使用的变量
全局变量:函数外部定义的变量–全局使用(整个py文件)

全局变量修改:

1.任何一个子函数,直接使用全局变量,不对它进行修改的话,则是共享全局变量
2.如果某个子函数对全局变量进行修改,全局变量是不可变类型,相当于子函数创建了一个局部变量
3.全局变量是可变类型,相当于修改全局变量

实例:

test_list = [1, 2, 3]  # 全局变量
test_str = 123
def test_01():
    print("函数内部的list:", test_str)

def test_02():
    test_list.append(4)
    print("test_01函数内部的list:", test_list)

test_01()
test_02()

实例输出结果:

函数内部的list: 123
test_01函数内部的list: [1, 2, 3, 4]


global关键字使用:

global关键字引用全局变量

实例:

test_list = [1,2,3]  # 全局变量,作用域(整个当前py文件内使用)
def test_01():
    global test_list_2  # globals()引用全局变量
    test_list_2 = [1,2,3,4]  # 局部变量,只能在test_01函数内使用
    print("函数内部的list:",test_list)

def test_02():
    print("test_01函数内部的list:",test_list_2)
test_01()
test_02()

实例输出结果:

函数内部的list: [1, 2, 3]
test_01函数内部的list: [1, 2, 3, 4]


学习完,就好好熟悉一下吧(* ̄︶ ̄)。

在这里插入图片描述

游戏结束:==over==
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值