BIF:Build in function
dir(__builtins__)#查看内建函数
help(print)
dir(print)
dir(list) #查看list包含的对象
list.__all__ #只查看可供调用的对象,注意:不是所有模块都有__all__属性
os.path.__file__#__file__查看源代码位置
在字符串前面加一个英文字幕r即可
e.g. string = r"C:\now"
注意:无论是否原始字符串,都不能以反斜杠""作为结尾。
"""
窗前明月光
疑是地上霜
"""
import ramdom
secret = ramdom.ramdint(1,10)
a='520'
b=int(a)
b = float(a)
c = str(5e10) #c = "50000000000"
-2**3 # -2的3次方
and or not
a=100
if 90>80:
print("xxx")
elif a<90:
print("yyy")
else:
print("zzz")
assert
e.g.
for i in range(5): #range 包含0,但是不包含5
print(xxx)
for i in range(1,10,2)
print(i)
创建列表
mix = [1,2,"cavin",3,4,5,6,x,[z,v,d],a]
向列表添加元素
添加一个元素:mix.append("hello")
添加多个元素:mix.extend("小美",123)
插入元素:
mix.insert(0,"狗子") #其中0表示的是列表的位置
从列表中获取元素:
mix[0] #获取第0个元素
mix[1],mix[3] = mix[3],mix[1] #元素1和元素3互相调换
删除元素:
mix.remove("狗子")
删除某个位置的元素:
del mix[0]
列表分片:
mix2 = mix[1:3]
mix2 = mix[:3]
mix2 = mix[0:9:2]
列表的其他函数,可以通过这个指令查看dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__',
'__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__',
'__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__',
'__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear',
'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
#带上了枷锁的列表
元组创建时使用小括号(大多数时候)
tuple1=(1,2,"狗子")
元组和列表类似,但是元组创建后不能修改。
dir(tuple)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__',
'__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', 'count', 'index']
dir(str)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__',
'__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__',
'__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode',
'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha',
'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace',
'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace',
'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines',
'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
capitalize:把字符串的第一个字符改成大写
casefold:把整个字符串的所有字符改成小写
upper:转换字符串中的所有小写字符为大写
rstrip:删除字符串末尾的空格
strip([chars]):删除字符串前边和后边所有的空格
1.format()
e.g. "{0} welcom {1} {num}".format("hello","cavin",num = "1000")
其中{0},{1}是位置参数,{num}是关键字参数,如果位置参数和关键字参数综合使用,位置参数必须在前。
e.g. "{0}:{1:.2f}".format("圆周率",3.141592)
冒号表示格式化符号的开始,.2表示四舍五入保留两位小数点。
2.格式化操作符%
"%d" % 98 或者 "%d"%98
list([iterable])
tuple([iterable])
str(obj)
len(sub)
max(...)
min(...)
sum()
sorted()
def myfun():
print(xxx)
def add(num1,num2):
"""
注释说明:返回num1+num2
"""
print(num1+num2)
return num1+num2,hello #可以同时返回多个值
#获取函数说明 add.__doc__
全局变量:
函数内部可以像C语言那样去访问全局变量,但是想要修改的话,python会在函数内部自动创建一个同名的局部变量,这样修改就不会影响到全局变量;
如果实在需要修改全局变量,可以在函数内部用global 声明全局变量
e.g.
count = 10
def test():
global count
count = 5
print(count)
lambda和filter
list(filter(lambda x: x%2 , range(10))) #取0-9内的奇数
lambda和map
list(map(lambda x: x*2 , range(10)))
递归
def recursion():
recursion()
创建字典
dict1 = {"张三":"男", "李四":"女"}
dict1 = dict((("张三","男"),("李四","女"))) #将元组转成字典
dict1 = dict("张三"="男", "李四"="女")
dict1["张三"] = "男" #字典赋值或者改写
dict的BIF:
fromkeys() #dict1.fromkeys()
keys()、values()、items() ##dict1.keys()
get()
copy()
pop()和popitem()
update()
(**) 两个星号的收集参数表示将参数们打包成字典的形式
e.g.
def test(** params):
print("有 %d个参数" % len(params))
print("它们分别是:",params)
test(a=1,b=2,c=3)
运行结果:
有3个参数
它们分别是:{'c'=3,'b'=2,'a'=1}
num1 = {}
集合里面没有重复的数据,即集合可以清除重复数据
e.g.
list1 = [1,1,2,3,4,4]
list1 = list(set(list1)) #删除重复数据
不可变集合
num1 = frozen({1,2,3,4,5})
首先需要用的OS模块,因为要设计文件名,path之类的操作
import os
func name | 使用方法 |
---|---|
os.getcwd() | 获取当前工作目录 |
os.chdir(path) | 改变当前工作目录 |
os.listdir(path=’.’) | 列举指定目录中的文件名 |
os.mkdir(path) | |
os.makedirs(path) | |
os.remove(path) | 删除文件 |
os.rmdir(path) | 删除单层目录 |
os.removedirs(path) | |
os.rename(old,new) | |
os.system(command) | 运行系统的shell命令 |
walk(top) | 遍历top参数指定路径下的所有子目录,并将结果返回一个三元组(路径,[包含目录],[包含文件]) |
os.curdir() | |
os.pardir | |
os.sep | 输出操作系统特定的路径分隔符(windows下为’\’,linux下为’/’) |
os.linesep | 当前平台使用的终止符(windows下为’\r\n’,linux下为’\n’) |
os.name | 指代当前使用的操作系统 |
import os
dir(os.path)
['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__',
'__package__', '__spec__', '_get_sep', '_joinrealpath', '_varprog', '_varprogb', 'abspath',
'altsep', 'basename', 'commonpath', 'commonprefix', 'curdir', 'defpath', 'devnull', 'dirname',
'exists', 'expanduser', 'expandvars', 'extsep', 'genericpath', 'getatime', 'getctime', 'getmtime',
'getsize', 'isabs', 'isdir', 'isfile', 'islink', 'ismount', 'join', 'lexists', 'normcase',
'normpath', 'os', 'pardir', 'pathsep', 'realpath', 'relpath', 'samefile', 'sameopenfile',
'samestat', 'sep', 'split', 'splitdrive', 'splitext', 'stat', 'supports_unicode_filenames',
'sys']
os.path.__all__
['normcase', 'isabs', 'join', 'splitdrive', 'split', 'splitext', 'basename', 'dirname',
'commonprefix', 'getsize', 'getmtime', 'getatime', 'getctime', 'islink', 'exists', 'lexists',
'isdir', 'isfile', 'ismount', 'expanduser', 'expandvars', 'normpath', 'abspath', 'samefile',
'sameopenfile', 'samestat', 'curdir', 'pardir', 'sep', 'pathsep', 'defpath', 'altsep', 'extsep',
'devnull', 'realpath', 'supports_unicode_filenames', 'relpath', 'commonpath']
func name | 使用方法 |
---|---|
basename(path) | 去掉目录路径,返回文件名 |
dirname(path) | 返回路径 |
join(path1[,path2[,…]]) | 路径合成 |
split(path) | 分割文件名和路径,返回(f_path,f_name)元组 |
splitext(path) | 分离文件名和扩展名 |
‘isabs’, ‘isdir’, ‘isfile’, ‘islink’, ‘ismount’ | |
getsize(file) | |
‘getatime’, ‘getctime’, ‘getmtime’ | 最近访问时间,创建时间,最新修改时间 |
import pickle
my_list = [123,456,"abc","张三"]
file_pickle = open(r'E:\my_list.pkl','wb')
pickle.dump(my_list,file_pickle)
file_pickle.close()
或者
import pickle
pickle_file = open(r'E:\my_list.pkl','wb')
my_list = pickle.load(pickle_file)
print(my_list)
AssertionError
AttributeError
IndexError
KeyError
NameError
OSError
SyntaxError
TypeError
ZeroDivisionError
try:
检测范围
except Exception[as reason]:
出现异常[exception]后的处理代码
e.g.
try:
f = open("test.txt")
print(f.read())
f.close
except OSError:
print('打开文件的时候出错了')
或者
try:
f = open("test.txt")
print(f.read())
f.close
except OSError as reason:
print('打开文件的时候出错了\n错误原因是' + str(reason))
except TypeError as reason:
print('打开文件的时候出错了\n错误原因是' + str(reason))
或者
try:
f = open("test.txt")
print(f.read())
f.close
except (OSError,TypeError):
print('打开文件的时候出错了\n错误原因是' + str(reason))
或者
try:
...
except:
...
finally语块中的内容就是确保无论如何都将被执行的内容
e.g.
try:
f = open("test.txt")
print(f.read())
except OSError:
print('打开文件的时候出错了')
finally:
f.close
e.g.:
try:
int('abc')
except ValueError as reason:
print("Error : " + str(reason))
else:
print("没有任何异常")
e.g.:
count = num // 2
while count > 1:
if num % count == 0:
print( '%d的最大约数是%d' % (num,count))
break;
count -= 1
else:
print('%d是素数!'%num)
e.g.
try:
f = open("test.txt")
print(f.read())
except OSError:
print('打开文件的时候出错了')
finally:
f.close
可替换为
e.g.
try:
with open("test.txt") as f
print(f.read())
except OSError:
print('打开文件的时候出错了')
class School:
#python约定类名以大写字母开头
#属性从代码层面来看其实就是变量
addr = '成都武侯区'
name = '某某中学'
#在变量前面增加__,此变量则为私有变量
__students = 1000
#init会在对象被创建时自动调用
def __init__(self,newname)
self.name = newname
#方法实际就是函数
def get_students(self): #self相当于this指针
return self.__students
def main():
sch = School('大源中学')
stu_count = sch.get_students()
class Parent:
def __init__(self):
a = 10
def fun1(self):
print('parent is running')
class Child(Parent):
def __init__(self):
super().__init__() 或者 Parent.__init__(self) #super可以自动找出所有的基类,所以推荐super
b = 80
...
def main():
c = Child()
c.fun1()
class Base1():
def fun1():
print(xxx)
class Base1():
def fun2():
print(xxx)
#多重继承
class C(Base1,Base2):
def fun3():
print(xxx)
#组合
class C():
def __init__(self):
self.bs1 = Base1()
self.bs2 = Base2()
CC.__dict__
issubclass(class,classinfo) 判断class是否是classinfo的子类
isinstance(object,classinfo)判断object是否是classinfo的实例对象
hasattr(object,name)
getattr(object,name[,default])
setattr(object,name,value)
delattr(object,name)
property(fget=None,fset=None,fdel=None,doc=None)
### 构造和析构
__init__(self[,...]) #返回值只能是None
__del__(self)
模块就是程序,OS就是一个模块
import 模块名
from 模块名 import 函数名
import 模块名 as 新名字
def test():
print(xxx)
if __name__ == '__main__'
test()
import sys
sys.path
#把模块所在位置添加到搜索路径
sys.path.append(path)
包就是把模块分门别类地存放到不同的文件,然后把各个文件夹的位置告诉python
包的创建步骤
1.创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字;
2.在文件夹中创建一个__init__.py的模块文件,内容可以为空;
3.将相关模块放入文件夹中