Python 函数

函数:完成某一功能

完成某一种功能的代码块

如何自己定义一个函数:

def(定义:define)

语法:

def function_name(arguments):

statement1

statement2

statement3

return value

1.使用关键字def

2.function_name:一般是小写,如果包含多个单词,使用_连接

3.(arguments):可以没有,也可以有(一个或者多个)

4.返回值:return

a.return 可以返回一个值,也可以返回多个值;如果返回多个值,用逗号隔开

b.执行了return,return之后的语句不再执行,直接跳出函数

c.需要有返回值的,使用return;如果不需要返回的,就不写

上边是定义了一个函数:定义一个函数不代表去执行这个函数;用函数之前肯定是要先定义的

执行函数/调用函数:

function_name(传入的参数)

def print_123():     # print_123是函数名
    print("123,23254,grt")


print_123()

data = 2
data1 = data

function_name = print_123
function_name()

print(print_123, type(print_123))

print("*" * 80)


def function_return_multi():
    print(123)
    return 1, 2, 3


def function_return_single():
    print(123)
    return 1


# result = function_return_multi()
# print(result, type(result))
data1, data2, data3 = function_return_multi()
print(data1, data2, data3)     # => data1, data2, data3 = (1, 2, 3)

result = function_return_single()
print(result, type(result))

print("*" * 80)


# a = 1
# b = 2
# a, b = b, a
# (a, b) = (b, a)
# a, b = (b, a)  # => (b, a) => b, a
# a, b = b, a

函数的参数:

什么是形参:形式参数

在定义函数阶段,定义的函数的参数,这里边参数叫做参数

什么是实参:实际参数

再调用阶段传入的实际参数,叫实参

在函数参数里面,等号两边不加空格

# def print_arg(arg1):
#    print(arg1)
    
    
# print_arg(1)


def print_arg2(arg1=2):  # arg1 = 2
    print(arg1)


print_arg2(1)  # arg1 = 1
def function_return_multi():
    print(123)
    return 1, 2, 3


def function_return_single():
    print(123)
    return 1


# result = function_return_multi()
# print(result, type(result))
data1, data2, data3 = function_return_multi()
print(data1, data2, data3)     # => data1, data2, data3 = (1, 2, 3)

result = function_return_single()
print(result, type(result))

1.如果参数有默认值, 那么这个参数可以传,也可以不传

2.默认值的参数必须非默认值参数之后

位置参数:没有默认值的参数

关键字参数:有默认值的参数

传参的方式:

以位置参数的方式去传参:根据参数的顺序去匹配

以关键字参数的方式去传参:第一个关键字之后的必须都是关键字参数传参

关键字传参是根据key去查找,不在乎顺序

形参定义的时候都是位置参数,传参的时候可以以位置参数也可以以关键字参数去传参

形参定义的时候是关键字参数,传参的时候可以以位置参数也可以以关键字参数传参

# a = 1
# b = 2
# a, b = b, a
# (a, b) = (b, a)
# a, b = (b, a)  # => (b, a) => b, a
# a, b = b, a

# def print_arg(arg1):
#     print(arg1)
#
#
# print_arg(1)


def print_arg2(arg1=2):  # arg1 = 2
    print(arg1)


print_arg2(1)  # arg1 = 1
print_arg2()
print("*" * 80)


def print_arg3(arg1, arg2):
    print(arg1, arg2)


print_arg3(1, 2)
print_arg3(1, arg2=2)
print_arg3(arg1=1, arg2=2)


def print_arg4(arg2, arg1=3):
    print(arg1, arg2)
# print_arg4(arg1=3, arg2) 【×】 non_default parameters follows default parameters 默认值参数应该放在非默认值之后


def print_arg5(arg1, arg2, arg3):
    print(arg1, arg2, arg3)

print_arg5(1, 2, 3)
print_arg5(1, arg2=2, arg3=3)
# print_arg5(1, arg2=2, 3) 【×】 positional argument after keyword argument 关键字参数之后,必须都是关键字参数
print_arg5(1, arg3=3, arg2=2)
print_arg5(arg1=1, arg2=2, arg3=3)


def print_arg6(arg1=1, arg2=2, arg3=3):
    print(arg1, arg2, arg3)

print_arg6(4, 5, 6)
print_arg6(4, arg2=5, arg3=6)
print_arg6(arg1=4, arg3=6, arg2=5)

特殊的参数:

args : arguments一个或多个位置参数

  : 但传入多个值得时候,args代表多个值

    会把多个值打包成一个元组 args=这个元组

kwargs :keyword argument一个或多个关键字参数

当传入多个关键字参数 kwargs,会把多个关键字参数打包成一个字典

注意: *args, kwargs,只是解释器给我们提供的一个建议名称

如果把一个函数定义成 def function_name(args, **kwargs):

有什么作用: 再不确定参数个数的情况下,可以使用这种方式 Python函数中的参数未确定类型

def print_args7(arg1, *args):
    print(arg1, *args)
    # print(type(*args))
    print(args, type(args))


print_args7(1, 2, 3, 4, 5, 6)


def print_arg8(arg1, arg2, *args, **kwargs):
    print(arg1, arg2, *args)
    print(kwargs, type(kwargs))


print_arg8(1, 2, 3, 4, 5, 6, value=10, vlue2=11, value3=12)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值