Python 基础 --- 函数

Python 函数表示

定义函数使用 def 关键字,一般格式如下:

def 函数名(参数列表):
    函数体

例子:

def say_hello(name):
    print("Hello: ", name)

调用函数:

say_hello("The Earth")

结果

Hello:  The Earth

参数传递:

1 对于不可变类型(数字,字符串,元组),相当于值传递; 2 对于可变类型(列表,集合,字典),相当于引用传递

def change_func(number):
    number += 1
    return number


def change_list(my_list):
    my_list.append(1)
    return my_list


num_a = 1
print("change_func return value: ", change_func(num_a))
print("original number a: ", num_a)

list_a = [3, 2]
print("change_list return value: ", change_list(list_a))
print("original list a: ", list_a)

结果

change_func return value:  2
original number a:  1
change_list return value:  [3, 2, 1]
original list a:  [3, 2, 1]

参数类型

  • 位置参数: 位置参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
def add_number(number_a, number_b):
    return number_a + number_b


print(add_number(1, 2))

结果

3
  • 关键字参数 使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
def get_name(first_name, second_name):
    print("Hello, ", first_name, second_name)


get_name(second_name="Zhang", first_name="San")
get_name("Zhang", "San")  # 没有声明关键字的话按位置参数处理

结果

Hello,  San Zhang
Hello,  Zhang San
  • 默认参数 调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 title_format 参数,则使用默认值:
def print_title(title, title_format=False):
    if title_format:
        print(title.title())
    else:
        print(title)


print_title("hello world")
print_title("hello_world", title_format=True)
# 这样会报错 SyntaxError: positional argument follows keyword argument ,意思是位置参数要在关键字参数前面。
# print_title(title_format=True, "hello_world")
print_title("hello_world", True)  # 如果顺序正确,可以不用标明关键字

结果

hello world
Hello_World
Hello_World
  • 不定长参数 你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数
  1. *号,加了*号的参数会以元组形式传给函数,只允许有一个
def test_tuple(name, *t):
    print(name)
    print(t)
    print(type(t))


test_tuple("Tom", "Jackson", "Alex")
test_tuple("David")

结果

Tom
('Jackson', 'Alex')
<class 'tuple'>
David
()
<class 'tuple'>
  1. **号, 只允许有一个 加了**号的参数会以字典形式传给函数,调用函数时候要传键值对,key=value,key值为字符串类型,而且不用引号或双引号标识
def test_dict(name, **d):
    print(name)
    print(d)
    print(type(d))


test_dict(1, a=2, b="3", c=(1, 2, 3), list_1=[4, 5, 6])
test_dict("4")

结果

1
{'a': 2, 'b': '3', 'c': (1, 2, 3), 'list_1': [4, 5, 6]}
<class 'dict'>
4
{}
<class 'dict'>

参数顺序

位置参数,关键字参数(默认参数),*号,**号

def test_order(arg1, arg2="default", *t1, **d1):
    return

声明函数时,参数中星号 * 可以单独出现。 如果单独出现星号 * 后的参数必须用关键字传入。

def test_asterisk(a, b, *, c):
    print("a = ", a, "b = ", b, "c = ", c)


# test_asterisk(1,2,3) #TypeError: test_asterisk() takes 2 positional arguments but 3 were given
test_asterisk(1, 2, c=3)

结果

a =  1 b =  2 c =  3

匿名函数

python 使用 lambda 来创建匿名函数。 不需要return 语句

my_sum = lambda arg1, arg2: arg1 + arg2
my_print = lambda arg1: print(arg1)

print(my_sum(1, 2))
my_print("Thanks")

结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值