day8
2018-07-25 本文已影响0人
木偶演员
01
- 声明一个函数,就是在声明一个变量
- 作用 赋值 查看类型 作为参数 作为表达式
函数名 当作变量使用
def fun1(a):
print((a))
print(fun1,type(fun1))
a =fun1
# funb = fun1(10) +100
a(100)
将函数 fun1作为列表的元素
functions = [fun1,fun1(10)]
functions[0]("abc")
将函数作为参数
def my_sum(*number):
sum1 = 0
for item in number:
sum1 += item
return sum1
def my_mul(*number):
sum1 = 1
for item in number:
sum1 *= item
return sum1
def operation(method, *number):
return method(number)
三目运算符 x if x>y else y
- 写个函数有一个参数 要求传入一个运算符(+ - * /)返回对应的值
def get_me (a,*num):
if a == "+" :
sum1 = 0
for item in num:
sum1 += item
return sum1
if a =="*":
sum1 = 1
for item in num:
sum1 *= item
return sum1
print(get_me("+",10,20))
02
作用域 : 一个变量可以使用的范围,就是这个变量的作用域
全局变量: 从申明开始,到文件结束,都可以使用
局部变量: 在函数中使用
03
-
匿名函数: 本质还是函数,以另外一种方式申明
- 声明:
ambda 参数列表:返回值 ---->结果就是一个函数变量
- 声明:
04
递归函数 : 在函数本身调用函数
def fun1():
print("=====")
fun1
理论上能循环的事情,递归都可以做
2.怎么写一个递归函数
# a.找到临界值
# b.找关系: 假设当前函数对应的功能已经实现 找f(n) 和 f(n-1)的关系
# c.使f(n-1)
递归举例
def my_sum(n):
if n == 1:
return 1
用递归求246***n (n)
def per(n):
print("*"*n)
if n == 1:
return "*"
per(n-1)
per(4)
per 4
def per(n):
if n == 1:
print('*')
return "*"
per(n-1)
print("*" * n)
per(4)
print('=====')
"""
per(4) n=4 per(3) print('*'*4)
per(3) n=3 per(2) print("*" * 3)
per(2) n=2 * print("*" * 2)
per(1) n=1
**
***
****
- 数调用的过程是一个压栈的过程(没调用一次函数,系统都会要为其分配内存空间,用 来储存函数中变量的=和参数,这个内存使用完会自我销毁
- 能不用就不用
05
函数的返回值
a.就是函数返回给调用者的值
b.就是return关键字后面的的表达式是我值
c.就是函数调用表达式的值
***函数调用
a.先回到函数调用的位置
b.传参
c.执行函数体
d.执行函数体 ,
return 关键字
a.将return后面值,返回给函数表达式
b.结束函数
函数的结束
a.函数体执行完
b.遇到return
"""
"""
"""
"""
3.函数调用表达式
python中每个函数表达式都是有值的