可迭代对象: 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,看着高大上.
# 缺点:
# ,不好排错.
#整体:
# 凡是用列表推导式构造的列表对象,用其他方式都可构建.,非常复杂的列表,列表推导式是构建不出的,
# 列表推导式比较有魔性.
分类:
# [变量(加工后的变量) 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代码构建的,这样就满足了个性化需求,满足以后你工作中需要
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.1作用域相关
globals()永远是全局的.
locals()当前位置的所有变量以及函数名等数据.
def func1():
# a1 = 2
# b1 = 3
# # print(globals())
# def func2():
# c = 666
# print('*****',locals())
# func2()
# print(locals())
# func1()
# print(locals())
# print(globals())
1.2其他相关
eval 执行的是字符串,可以执行字符串的内容比如数字的相加和字典
exec 执行的是字符串,可以执行字符串的循环
complie
print('1 + 3')
# print(eval('1+3'))
# print(eval('3 * 3'))
# dic = eval("{'name': 'alex'}")
# print(dic,type(dic))
code = '''
for i in range(1, 11):
print(i)
'''
# exec(code)
# compile:将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。
输入相关的操作
input
print 操作较多
input:函数接受一个标准输入数据,返回为 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()
内存相关操作
hash 获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值。
rint(hash('name'))
# print(hash(7117817419752622577))
# print(hash('name1'))
# print(hash('name2'))
# print(hash('name3'))
# print(hash(100))
id用于获取对象的内存地址。
1.2.3
文件操作相关
open:函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。
1.2.4
模块相关__import__
#
# __import__:函数用于动态加载类和函数 。
1.2.5
help 函数用于查看函数或模块用途的详细说明。
1.2.6
callable:函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
def func1():
print(111)
a = 666
print(callable(a))
print(callable(func1))