part 1 函数回顾
函数的声明 | def 函数名(形参) |
---|
def 函数体(形参):
函数体
函数调用顺序 | 1.返回函数声明的地方 | 2.将实参赋值给形参 | 3.执行函数体 | 4.执行完函数体,将返回值给函数调用表达式 | 5.回到函数位置 |
---|
函数的参数 | 位置函数和关键字参数 | 给参数赋默认值 | 参数的默认值(有默认值的放在后面) | 参数个数不确定加* |
---|
part 2 函数的返回值
1、
a.函数返回值就是函数返回给调用者的值 | b.return关键字后面的表达式 | c.函数调用表达式的值 |
---|
python 每个函数都有返回值,返回值就是return,如果函数没有return那么返回值就是None
3、return关键字
a.将return关键字后面的值返回给函数调用表达式
b.结束函数
c.函数调用表达式都是有值的
def func1():
print('aaa')
func1() #函数调用表达式
def sum1(x,y):
#x = 10 y =20
return x+y #return 30
#练习:写一个函数,判断指定的年龄是否成年
def age(n):
if n >= 18:
return Ture
else:
rerurn False
if age(10)
print('可以去网吧')
else:
print('回家做作业吧')
4、`
函数的结束 | 1.函数执行完 | 遇到return |
---|
如何写一个函数(思路)
eg:写一个函数下载指定地址数据
def download(url):
if #判断有没有网
#return
#网络请求
#请求数据
#保存数据
写一个函数,求1+2+3+....和不能大于10000
def sum1():
sum1 = 0
number = 1
while True:
if sum1 + number >= 10000:
return sum1, number-1 #python可以返回多个值,用逗号隔开,返回值是一个元组。
sum1 += number
number += 1
print(sum1())
part 3 作用域
作用域:一个变量可以使用的范围,就是这个变量的作用域。(函数和类可以影响变量的作用域)
1.全局变量:从声明开始到文件结束都可以使用。
2.局部变量:在函数中声明的变量是局部变量。作用域是声明开始到函数结束。
a = 10 #这是一个全局变量
print(a)
#3.global和nonlocal
abc = 'abc'
def func1():
abc = 'aaa'#局部变量,如果全局变量和局部变量名相同,在函数中使用的是局部变量
print(abc)
global bcd #声明bcd是一个全局变量
bcd = 200
print(bcd)
func1()
global在函数中创建一个全局变量
格式:global 变量名
变量名 = 值
#统计一个函数调用的次数
count = 0
def my_func():
global count
count += 1
print('====')
nonlocal
python中函数可以声明函数
def func11():
a_11 =10
print(a)
def func12():
nonlocal a_11
a_11 = 100
print('内部:',a_11)
print('内部函数')
part 4 匿名函数
匿名函数:本质还是函数,以另外一种简单的方式来声明
#匿名函数的声明:
#lambda参数列表:返回值 --->结果就是一个函数。
#写一个函数 计算两个数的和
def sum1(x,y):
return x+y
print(sum1(10,20))
my_sum2 = lambda x,y:x+y
print(my_sum2(10,20)
part 5
声明一个函数就是在声明一个变量
函数名可以当成变量来使用。可以打印,可以赋值,可以查看类型 | 函数也可以作为函数的参数,也可以作为函数的返回值 | 函数名func1可以当作变量来使用 |
---|
a = 10
def func1(a):
print(a)
print(func1(a),type(func1))
#将函数func1赋给变量a,这个时候a就是一个函数
a = func1
讲函数func1作为列表的元素
function = [func1]
function[0]('abc')
可以将函数作为参数
def sum1(*number):
sum1 = 0
for i in number:
sum1 += i
return sum1
def mul1(*n):
sum2 = 0
for i in n:
sum2 *= i
return sum2
python中三目运算符
值1 if 表达式 else 值2--->判断表达式是否为True,如果为TRue整个表达式的结果是值1,否则为值2
3.将函数做为函数的返回值
写一个函数有一个参数要求传入一个运算符号(+-*><)
返回符号对应的功能
def get_method(char):
if char == '+':
return lambda x,y:x+y
elif char == '>':
return lambda x,y:x>y
elif char == '*':
def func(x,y):
return x*y
return func
else:
print('别调皮')
return
print(get_method('+')(10,20))
print(get_method('>')(10,20))
print(get_method('*')(10,20))
part 6 递归函数
递归函数:在函数的函数体中调用函数本身,这个函数就是递归函数
def func():
print('====')
func()
循环能做的事情,理论上递归都可以做。
怎么去写递归 | a.找临界值(跳出循环-->return) | b.假设当前函数对应的功能已经实现找到f(n)和f(n-1)的关系 | c.使用f(n-1)与前面找到的关系去实现f(n)的功能 |
---|
#1+2+3+4+。。n写一个递归函数实现
def sum1(n):
#1,找到临界值
if n == 1:
return 1
#找sum1(n)和sum1(n-1)的关系
#关系:sum1(n) = sum(n-1) + n
return sum1(n-1) + n
print(sum1(10))
用递归求246
def mul(n):
if n % 2:
print('请输入奇数')
return None
if n == 2:
return 2
return mul(n-2) * n
print(mul(8))
# def pic(n):
# if n == 1:
# print('*')
# return None
# print('*'*n)
# pic(n-1)
# pic(5)
def pic(n):
if n == 1:
print('*')
return
pic(n-1)
print('*'*n)
print(pic(5))
网友评论