在一个模块中引入其他模块
1.import 模块名(Python的文件名)
import requests
import requests
#只会调用一次,生成实例只有一次
2.import 模块名 as 模块别名
import test_m as test
print(__name__)# __main__,表示当前的文件为主文件
#输出当前引入模块的名字
print(test_m.name)
r= test_m.test()
print(r)
a=test_m.hero()
print(a.name)
from 模块名 import 变量,变量…
from 模块名 import 变量 as 别名
new_list=[x * 3 for x in range(20)if x%5==0]
print(new_list)
#[0, 15, 30, 45]
new=(x * 3 for x in range(20)if x%5==0)
print(new)
#<generator object <genexpr> at 0x0000019725DE36D0> ()表示生成器对象
#获得元素
print(new.__next__())#0
print(new.__next__())#15
print(new.__next__())#30
print(new.__next__())#45
print(next(new))#0
print(next(new))#15
print(next(new))#30
print(next(new))#45
print(next(new))#StopIteration停止迭代
def fn():
n = 0
while True:
n += 1
yield n #使得程序变为生成器,相当于return n +暂停
n = fn()
print(n)
print(next(n))#1
print(next(n))#2
#找到名字长度大于3的语言
lst = ['python','java','ruby','php','mysql']
def fn(lst):
new_lst = []
for language in lst:
if len(language) > 3:
new_lst.append(language)
return new_lst
print(fn(lst))
r = [language for language in lst if len(language)>3]
print(r)
#['python', 'java', 'ruby', 'mysql']
isinstance()可以检测某个实例是否是该类的实例
from collections import Iterable #Iterable就是迭代器对象
lst=[1,2,3,4]
print(isinstance(lst,Iterable))#false 可迭代对象不一定是迭代器
s =(x*3 for x in range(10))
print(isinstance(s,Iterable))#true 生成器是迭代器
print(next(lst))#error list并不是迭代器
llst=iter(lst)#可以将可迭代对象变成迭代器
print(next(llst))#1
class person()
def __new__(cls,*args,**kwargs):
print('创建类的方法')
def __init__(self):
print('初始化')
p=person()
class person()
def __new__(cls,*args,**kwargs):
print('创建类的方法')
obj=object.__new__(cls)#创建对象
return obj
def __init__(self):
print('创建完对象之后进行初始化')
p=person()
class person()
#私有变量
_instance =None
def __new__(cls,*args,**kwargs)
print('创建类的方法')
if person._instance is None:
obj = object.__new(cls)
person._instance=obj
return person._instance#将这个对象赋值给类的私有变量_instance
def __init__(self):
print('初始化')
p1=person()
p2=person()
print(id(p1),id(p2))#id值一模一样,在同一个内存空间