import random
#导入多个模块且模块内有同名功能.调用这个同名功能,调到的是后面导入的模块的功能
#一个模块文件中有`__all__`变量,当使用`from xxx import *`导入时,只能导入这个列表中的元素,对 ‘ import xxx ’ 这种方式无效
__all__=["name","age","func_name"]
# 单行注释
"""
多行注释,使用变量接收它就是字符串,不接收就是多行注释
"""
# name=input("这里面可以写输入提示语")
# num=random.randint(1,13)
name="zhangSan"
age=29
sex=None
#import到其他py不会被执行
if __name__=='__main__':
print(5/2) #2.5 直接除
print(5//2) #2 取整
print(5%2) #1 取余
print(2**3) #8 次方
print("姓名"+name,f"{age+1}","字符串不能和非字符串类型直接进行拼接")
message="这是个名字%s这是个年龄%s" %(name,age) # %d %f
# for x in name:
for x in range(1,9,2):
print(x,end='')
# continue结束就近当次循环,break结束就近循环
print(type("显示内容的数据类型"))
def func_name(x):
global age #全局变化
age=200
ls=["str",13,13.5,[1,3]]
# ls.clear()
ls.append(1)
ls.append([1,2,3]) #整体加入
ls.extend([1,2,3]) #元素加入
ls.insert(2,4) #位置2插入4
del ls[0]
ls.pop(0) #不写从尾部删
ls.remove(2) #删除第一个元素2
ls.count(1) #里面有多少个1
ls.index(1) #第一个元素1所在位置 不存在就报错
len(ls)
ls[1:5:2] #起始,结尾,步长(可负[::-1]反转)取值 |列表,元组,字符串
#不可以修改元组的内容,但可以修改元组内list元素(增删改查反转等)
#字符串不可修改,操作都生成新字符串
name.index("a") #字符串所在开始位置
name.strip("ab") #前后a/b都去掉
name.count("it") #存在it个数
s=set() #add remove pop随机取出 clear len
ss={1,2,3,4,5,2,1,3}
s.difference(ss) #取出差集
s.difference_update(ss)#s中删除和ss相同的元素,s被修改,ss不变
s.union(ss)
d=dict() #d={}
dd={1:1,2:2}
#dd[key]=value 既是添加,又是更新
# kv可为任何类型,k不可为字典
#dd.pop(key) clear keys len(dd)
for k in dd.keys():
print(k,dd[k])
#len(容器) max(容器) min(容器)
#list(容器) str(容器) tuple(容器) set(容器) 将容器转换为对应的类型
#list=sorted(容器) 对容器进行排序 返回list
#函数参数可传入函数,传递逻辑不传递计算
def multi_return(para="default",*paras,**kvparas): #元组,字典
return 1,2
x,y=multi_return() #x1 y2
f=open("python.txt","r",encoding="UTF-8")
#read write无则建,有则覆盖写 append无则建,有则追加
f.read() #可给参数 读几个字节
f.readline() #一次读一行
f.readlines() #一次全读,一行一个,返回list
f.close()
for line in open("python.txt","r"):
print(line)
#操作完会自动关闭
with open("python.txt","r") as f:
f.readlines()
ff=open("python.txt","w",encoding="UTF-8")
ff.write("hello world")
ff.flush() #执行它才会真正的写入
try:
print("可能出错的代码")
except Exception as e:
print("有异常执行这里")
else:
print("无异常执行这里")
finally:
print("有无异常都要执行这里")
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
#定义成员方法时必须有self,传参时可以忽略
def eat(self,food):
print(self.name+" eat "+food)
def __str__(self):
return self.name+self.age
def __lt__(self, other):
return self.age<other.age
def __le__(self, other):
return self.age<=other.age
def __eq__(self, other):
return self.age==other.age
#名字以两个_为开头就是私有的,只能本类中用,子类和对象皆没有
__private_val=None
def __private_func(self):
print("私有方法")
#可以多继承,如有同名成员,从左向右优先保留
class Man(Person,Person,Person):
name="这是子类重写父类属性" #super().变量/方法 只能在子类内调用父类的同名成员
more_val="这是子类多加的属性"
def speak(self): #含有抽象方法的类为抽象类
pass
#类型注解仅仅是提示性的 并不会纠错
vo=1 # type:int
v1:int=10
v2:str="abc"
v3:Person=Person("lisi",19)
v4:list=[1,2,3]
v5:tuple=(1,2,3)
v6:set={1,2,3}
v7:dict={1:2}
my_list:list[int]=[1,2,3]
my_tuple:[str,int,bool]=("abc",18,True)
my_set:set[int]={1,2,3}
my_dict:dict[int,int]={1:2}
def add(x:int,y:int)->int:
return x+y
from typing import Union
my_list2:list[Union[str,int]]=[1,2,"abc"]
my_dict2:dict[str,Union[str,int]]={"name":"zhagnsan","age":31}
def ad(x:Union[int,str])->Union[int,str]:
pass #表示空,保证定义的完整性