函数定义和调用
下面的代码是简单的函数定义例子,分别是无参数函数和有参数函数:
def print_hello():
print("Hello world!")
def print_string(string):
print(string)
print_hello()
print_string("test")
输出:
Hello world!
test
多个参数的函数可以按照顺序设置参数也可以用参数的关键字进行调用:
def print_name(first_name, last_name):
print(first_name + last_name)
print_name("黄", "靠谱")
print_name(last_name="靠谱", first_name="黄")
输出:
黄靠谱
黄靠谱
函数支持设置参数默认值,需要注意默认参数必须在所有参数的后面:
# 不能定义成 def print_info(age = 18, name)
def print_info(name, age = 18):
print(name + " " + str(age))
print_info("黄靠谱")
输出:
黄靠谱 18
函数返回值
函数返回值直接在函数中return即可,可以返回任何类型的值,包括列表、字典等。
def get_format(first_name, last_name):
return first_name + "-" + last_name
print(get_format("黄", "靠谱"))
输出:
黄-靠谱
函数参数为列表
当函数参数为列表时,在函数中修改列表,列表实参也会改变。
def change_list(alist):
for i in range(len(alist)):
print(alist[i])
alist[i] = alist[i] * 2
numbers = [1, 2, 3, 4]
change_list(numbers)
print(numbers)
输出:
1
2
3
4
[2, 4, 6, 8]
如果不希望函数对列表进行修改,可以通过传入列表的复制解决:
def change_list(alist):
for i in range(len(alist)):
print(alist[i])
alist[i] = alist[i] * 2
numbers = [1, 2, 3, 4]
change_list(numbers[:]) // 传入列表的复制
print(numbers)
输出:
1
2
3
4
[1, 2, 3, 4]
字典和列表一致:
def change_dic(dic):
for key,value in dic.items():
print(key + str(value))
if (None != dic.get("a")):
dic["a"] = 99
ages = {"a" : 1, "b" : 2, "c" : 3}
change_dic(ages)
print(ages)
输出:
a1
b2
c3
{'a': 99, 'b': 2, 'c': 3}
参数数量可变函数
python支持传入可变数量的参数,一下为可变参数的传递方法:
def print_info(*infos):
print(infos)
print_info('a')
print_info('a', 'b', 'c')
输出:
('a',)
('a', 'b', 'c')
同时,也可以对可变参数做遍历:
def print_info(*infos):
for info in infos:
print(info)
print_info('a')
print_info('a', 'b', 'c')
输出:
a
a
b
c
可变参数也可以和普通参数一起使用:
def print_info(count, *infos):
print(count)
print(infos)
print_info(1, 'a')
print_info(3, 'a', 'b', 'c')
输出:
1
('a',)
3
('a', 'b', 'c')
关键字实参函数
python支持用户自定义函数参数的关键字和值:
def print_info(count, **infos):
print(count)
print(infos)
print_info(2, first='a', second='b')
输出:
2
{'first': 'a', 'second': 'b'}
通过输出可以发现,实际上将自定义的参数转变成了字典形式。