Python入门4

函数

函数其实在日常的编码过程中,你都在使用,比如print()、input()、len()等函数,只不过这些都是python给你写好的内置函数,供你是用,内置的函数数量有限,想让python为我们做更多的事情,就需要自己设计符合的函数

1、减少重复代码

2、使程序变的可扩展

3、使程序变得易维护

开始创建函数:

创建函数之前,我们先对创建函数的语法进行了解,见下图

Python入门4

1、def 是关键字,不可缺少

2、函数名可以自己定义,不可缺少

3、参数:可选

4、retrun:可选

示例:

def hello():
print('hello world')

函数的调用

函数在定义完成后,自身无法进行允许,必须进行调用,比如我们把上边的函数进行执行

hello()

# 输出
hello world

函数的参数

在调用函数的时候,我们会往里面传入一些值,放在函数的括号内,这个就叫参数,比如书写如下函数:

def hello(name):
print('hello ' + name) hello('Tom')
hello('Jerry') # 输出
hello Tom
hello Jerry

1、位置参数:

位置参数就是在调用函数的时候,形参和实参一一对应,不多也不少,这就是位置参数

def calc(x, y):
print(x * y) calc(2, 3)

2、关键参数

在有的时候,我们希望在调用的时候明确,我要把实参的值赋予给谁的时候,就需要是用关键参数,这个时候,你的参数顺序可以随意更换。

def calc(x, y):
print(x * y) calc(x=2, y=3)

3、非固定参数--*args

若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数

def test(*args):
print(args) test('arg1', 'arg2', 'arg3') # 输出
('arg1', 'arg2', 'arg3')

4、非固定参数--**kwargs

def test(**kwargs):
print(kwargs) test(name='tom', age=18) # 输出
{'age': 18, 'name': 'tom'}

局部变量和全局变量

在被调用的函数内部使用的变量,属于局部变量,处于该函数的"局部作用域",这个时候的变量,不能被外部是用,例如:

def test():
count = 1 print(count) # 输出
NameError: name 'count' is not defined

调用全局变量

count = 1

def test():
print(count) test()

递归

递归(recursion):通俗的说,程序调用自身的编程技巧。函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

递归特性:

1. 必须有一个明确的结束条件

2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

def func(num):
if num == 1:
return 1
return num * func(num - 1) x = func(7)
print(x)
上一篇:刷题-力扣-107. 二叉树的层序遍历 II


下一篇:习题:codevs 1519 过路费 解题报告