函数 迭代器 生成器 内置函数 匿名函数

'''
#可迭代对象: str,list,dict,tuple,set,range
# 文件句柄:是迭代器.
# with open('01 今日内容大纲', encoding='utf-8') as f1:
# f1.read()
# print('__iter__' in dir(f1))
# print('__next__' in dir(f1))
# l1 = [1, 2, 3]
# from collections import Iterable
# from collections import Iterator
# print(isinstance(l1,Iterable))
# print(isinstance(l1,Iterator))
# print(isinstance(l1,list))
'''



l1 = []
for i in range(1,14):
l1.append(i)
print(l1)
l1 = []
for i in range(1,14):
l1.append('python%d期' % i)
print(l1)
列表推导式
l2 = [i for i in range(1, 14)]
[变量(加工后的变量) for 变量 in iterable] 循环模式
print(l2)
l3 = [ 'python%s期' % i for i in range(1, 14)]
print(l3)
优点:
1,节省代码,一行搞定.
2,看着高大上.
缺点:
,不好排错.
整体:
凡是用列表推导式构造的列表对象,用其他方式都可构建.,非常复杂的列表,列表推导式是构建不出的,
列表推导式比较有魔性.
构建一个列表:
['技师0号','技师1号'... '技师15号']
print(['技师%s号' % i for i in range(16)])
['护士1号', '护士3号','护士5号', ...,'护士13号']
print(['护士%s号' % i for i in range(1, 14, 2)])

分类:
[变量(加工后的变量) for 变量 in iterable] 循环模式
[变量(加工后的变量) for 变量 in iterable if 条件] 筛选模式
l1 = [i for i in range(1, 31) if i % 3 == 0]
print(l1)

10以内所有数的平方
print([i*i for i in range(11)])

30以内所有能被3整除的数的平方
print([i**2 for i in range(31) if i % 3 == 0])

100 以内所有的奇数.
print([i for i in range(1,101,2)])
print([i for i in range(101) if i % 2 == 1])

生成器表达式
l1 = ['python%s期' % i for i in range(1,14)]
print(l1)

g_obj = ('python%s期' % i for i in range(1,14)) # 循环模式
g_obj1 = ('python%s期' % i for i in range(1,14) if i % 2 == 0) # 循环模式
print(g_obj)
print(g_obj.__next__())
print(g_obj.__next__())
print(g_obj.__next__())
print(g_obj.__next__())
for i in g_obj1:
print(i)


生成器:两种方式:
生成器函数. yield
生成器表达式


为什么有生成器:
生成器本身是自己用python代码构建的,这样就满足了个性化需求,满足以后你工作中需要.
def func():
print(111)
yield 222
def func2():
print(333)
yield 333

names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
l2 = [name for i in names for name in i if name.count('e') == 2]
l1 = []
for i in names:
for name in i:
if name.count('e') == 2:
l1.append(name)
print(l1)
print(l2)

mcase = {'a': 10, 'b': 34}
print({mcase[i]: i for i in mcase})

内置函数(1)
目前学过的内置函数都有什么样的呢
'''
print()
input()
range()
len()
max()
min()
open()
type()
int()
str()
list()
dict()
set()
dir()
tuple()
bool()
id()
iter()
next()
isinstance()

'''
上面这些大概就是目前我们之前学过的内置函数了
内置函数什么意思呢?
内置函数: 一些常用的功能,python都给你封装好了,供你直接使用.
##内置函数: 一些常用的功能,python都给你封装好了,供你直接使用
1.1作用域相关
#locals: 函数会以字典的类型返回当前位置的全部局部变量.
# globals: 函数以字典的类型返回全部全局变量
#例子示范:
a = 1
b = 2
print(locals())
print(globals())
#这两个一样,因为是全局执行的
##################################################
def func (argv):
c = 2
print(locals())
print(globals())
func(3)
#这两个不一样
##其他相关
#字符串类型代码的执行 eval , exec ,complie
# *** eval: 执行字符串类型的代码,并返回最终结果.
print(eval("2+2")) ##4

n = 81
print(eval("n + 4")) ##85

eval('print(666)') ###666

## exec :执行字符串类型的代码.
s = """
for i in [1,2,3]:
print(i)
"""
exec(s) ###结果是 1 2 3

#compile: 将字符串类型的代码编译, 代码对象能够通过exec语句来执行或者eval()进行求值

##1.2.2 输入输出相关 input ,print
# *** 函数接收一个标准输入数据,返回为string 类型.
# *** print:打印输出

print(1,2,3,sep='|') #设置每个元素的连接符 sep = '|'
print(666 ,end=' ') #end = '\n' 默认换行
print(555)
f1 = open('log',encoding='utf-8',mode='w')
print('随便写的内容',file=f1)
f1.close()

#1.2.3 内存相关 hash id
# ** hash: 获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值
print(hash('name'))
print(hash(7117817419752622577))
print(hash('name1'))
print(hash('name2'))
print(hash('name3'))
print(hash(100))
print(hash(1))
print(hash(True))

# ** id :用于获取对象的内存地址.

l1 = [i for i in range(100) if i % 2 == 1]
print(l1)
count = 0
for i in l1:
if i ==51:
print(count)
count +=1

#1.2.3 文件操作相关
# open:函数打开一个文件,创建一个file 对象,相关的方法才可以调用它进行读写.
# 1.2.4 模块相关 __import__
#__import__ :函数用于动态加载类和函数.

#1.2.5帮助

#help :函数用于查看函数或者模块用途的详细说明
print(help(str))

#1.2.6 调用相关
# ** callable: 函数用于检查一个对象是否是可调用的. 如果返回True ,object仍然可能调用失败;但如果返回False,调用对象ojbect 绝对不会成功
def func1():
print(111)
a = 666
print(callable(a))
print(callable(func1)) ###检查函数是否可以被调用

猜你喜欢

转载自www.cnblogs.com/liuafan/p/9204014.html