复习
1.作用域
2.return可返回任何值(包含函数,意思是返回值可以返回函数)
没有return返回None例子:
def test1():
print('in the test1)--------------------- (2)
def test():
print('in the test)-------------------------(1)
return test1
res = test()
print(res())------------------------------------------(3)
************************************************
result:
in the test ————(1)
in the test1————(2)
None------------------------------因为test1没有return值(3)
函数名称(test)-------内存地址
函数名+( )括号-------运行这个函数
注意事项:
不可以一步进入子程序,要一层层运行才能进入子程序。
匿名函数
lambda x :x+1
其中:x是形参,x+1是返回值(表达式)
要获得函数的运行结果: 函数结果要赋给一个变量保存值。
fun = lambda x : x+1
print(fun(10))
匿名函数就是没有名字的函数,没有名字运行完就会马上会被内存回收。
lambda函数通常会与其他函数一起用(def),不会单独存在,
如果单独存在,python解释完了之后就会马上被内存回收。
匿名函数不应该存在复杂的逻辑运算:
lambda x :if x > 1...等等
x:后面应该是一个明确的返回值
可以是 lambda x : startswith(N)
这样可以,返回值是True和False
lambda的冒号后面一定是最终返回结果
lambda x,y,z:(x+1, y+1, z+1)--------------可以多个值运算格式
编程方法论(流派)
1.面向过程
2.函数体
3.面向对象
要形成自己的风格
面向过程:将大的问题分解成几个小的问题
函数就是编程(最早)
函数式 = 编程语言定义的函数 + 数学意义的函数
1.不可变,不用变量保存状态,不修改变量
2.第一类对象,函数即“变量”
3.尾调用
把函数当作参数传给另一个参数
def foo(n):
print(n)
def bar(name):
print('my name is %s" %name)
foo(bar ('wwe'))
***********************************
result:
my name is wwe
None -------------------------因为bar没有return,所以返回值为None
注意-------------最后一步 <>最后一行
高阶函数定义(满足其中一项即可)
1.把函数当作参数传给另一个函数 | 函数接受的参数是一个函数名称
2.返回值中包含函数
---------------------------------------------------------------------------------------------------------------
map函数
array==参数
func==函数运算
def map_test(func, array):
ret [ ] -------------------这个是表示空的列表,用来接收作用
for i in num_1:
res = func( i ) *****
ret.append(res) ***********add_one(i)写死逻辑,这个例子应该是为了表达出,逻辑被写死,不够灵活,扩张性不好
return ret ****
print(map_test (add_one,num_1) )---------可以写成--------print(map_test ( lanbda x : x+1,num_1) 匿名函数是用于简单逻辑(不能太复杂和不能没有明确的返回值)
其中:
map_test() 是函数逻辑
add_one 是要求
num_1 是参数
map函数是个迭代器,只能迭代一次-----------?为什么,忘记怎么理解了
map ( lambda x : x+1, num_1)
其中 lambda x : x+1 是处理方法------------如果是逻辑很精简的用lambda,如果逻辑太复杂则要用自己定义的函数
num_1 是参数-----------进行for循环赋值给map
print(传的是有名函数,list(map(reduce_one, num_1) ) )
函数是编程,缺点是易读性差,优点是精简。
***** filter函数 ******
def filter_test (array): ——————其中array不要写成movice_people; 因为会修改到movice_people这个全局变量
ret [ ]
for p in array:
if not p.startswith(' sb' ):
ret.append(p)
return ret
res = print (filter_test(movic_people) ) ------------这里调用movice_people 不会修改全局变量。
res的作用是保存,要保存就赋值给一个变量,类似挂门牌
注意:
print ( a =filter_test(movice_people) ) ---------这样是打印的是a赋值的过程
print(filter (lambda n :n.endswith('sb) , movice_people) --------------------这样是打印成内存地址,要在前面加上list(用列表形式保存值)
这个是根据n.endswith('sb) 的布尔值,来选择保留(true)movice_people保留值。
*************************************************************************************************************************
reduce函数
from functools import reduce ---------------->>>>>>意思是从functool模块中,导入reduce功能
def reduce_test (func,array, init = None)>>>>>>>>>>其中init = None是默认参数
reduce函数
reduce (function----函数,sequence------序列, inital = None-----初始值参数)
----------------------------------------------------------------------------------------------------------------------------------------------
总结(小结)
map():
处理序列中的每个元素,得到的结果是一个“列表”,该“列表”元素个数及位置与原来的一样
filter():
遍历序列中的每个元素,判断每个元素得到布尔值,如果布尔值是True,则留下来
-------------------------------------------------------------------------------------------------------------------------------------------
内置函数:
abs()——取绝对值
all ( n ) ---------其中 n = [1, 2, 4], all( ) 会将列表中所有的元素进行布尔运算,
特例:如果是个空的是返回True,这个是在注释里写的,可以去看看
any()—— 里面有一个是真,则全为真
bin ( ) ——将十进制转二进制
bool() ——判断布尔值,( 空,None, 0 布尔值为False)其余都为True
bytes()——把一个字符转换成字节
例如 :
name = '你好' print(bytes(name,encoding = 'utf8')) ------resul--------------- b'xe4xbdxa0xe5xa5xbd'
其中x 表示是十六进制(标识)
utf-8 中文是3个字节
gbk 中文是2个字节
bytes()存在的意义是,因为网络传输只能传二进制
print(bytes (name,encoding = ‘utf-8’).decode('utf-8)) --------------------其中decode是解码作用,用什么编码就用什么解码
注意:ascil码不能编中文
chr():
print(chr(91))-----------------------打印的结果是 a ,chr()中给个数字,就会打印成在ascil表里相应位置的字符
dict()?
dir()打印某个对象下面有哪些方法,只打印名称。作用是查看作用
dirmod()-------运用于分页功能
dirmod(10,3) --------10可以是一共多少信息,而3是一页放多少信息。
--------result---------
(3, 1)取商得余。3为商,1为余。因为余不为0,所以要多分一页。
dic = {name : ‘wwe’} 字典
eval()---------------------------------很重要------------------------
d1 = eval(dic_str) --------------将字符串中的数据结构提取出来(1)
d1[ 'name']
---------------------result---------------------
wwe
eval的第二个功能,把字符串中表达式进行运算
express = ‘1+2*(3/3-1)- 2’ 表达式是字符串形式
eval(express)
-----------result-------------
-1.0
frozenset() frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
hash()
可以hash的数据类型是不可变数据类型,反之
hash是一种算法,可以防止软件被篡改(通过hash值前后判断)
help()帮助
bin()十进制转二进制
hex()十进制转十六进制
oct()十进制转八进制
isinstance(1,int ) ---------------判断1是不是int类型,返回是布尔值。
str
list 其中([ ] ,list) —— True
dict
locals()本地,当前级别
max()取最大值
min()取最小值