python入门
数据类型
字符串、整型、列表、集合、字典、元祖
不可变类型:字符串、整型、元祖
可变类型:列表、字典
*字典的元素下标不能使用列表和集合
*使用+=的问题
列表变量调用+=本质上是在执行列表变量的extend方法,不会修改变量的引用。
列表变量使用 + 不会做相加再赋值的操作,+=本质上是在调用列表的extend方法。
def demo(num, num_list):
num += num
num_list = num_list + num_list
// 这两种情况相同
// num_list += num_list
// num_list.extend(num_list)
print(num)
print(num_list)
gl_num = 9
gl_list = [1, 2, 3]
demo(gl_num, gl_list)
print(gl_num) // 9
print(gl_list) // 相加输出[1,2,3]; +=或extend输出[1,2,3,1,2,3]
if条件判断
语法:
if 表达式1:
语句
if 表达式2:
语句
elif 表达式3:
语句
else:
语句
elif 表达式4:
语句
else:
语句
*其中判断是不是None,用 is 或者 is not 判断
函数
def foo():
...
有参数的情况,缺省参数放在最后
def foo(param1, param2='', param3=[]):
...
元祖和字典的拆包
def demo(*args, **kwargs):
...
args接收元祖,kwargs接收字典
gl_nums = (1,2,3)
gl_dict = {"name": "xxx", "age": 18}
demo(*gl_num, **gl_dict)
类和对象
dir内置函数,传入标识符/数据,可以查看对象内的所有属性和方法。
def demo():
...
dir(demo)
类名必须是大驼峰方式命名
类中的方法第一个参数是self。哪一个对象调用的方法,self就是哪一个对象的引用。
调用方法时,不需要传递self对象。
在方法内部,可以通过self. 访问对象的属性,也可以通过self.调用其他的对象方法。
定义私有属性或方法,在属性名或方法名前增加两个下划线即可。
继承:在类名后跟上父类的名称。可以同时继承多个父类。
如果没有父类,统一继承自obiect。class Demo(obiect):
类是特殊的对象,所以也可以在类中定义属性
class Demo(Base1, Base2):
count = 0
def __init__(self, age):
# 在初始方法中定义属性
#self.属性名 = 属性的初始值
self.name = 'xxx'
self.age = age
self.__last_name = 'xxx';
def foo(self):
print(self.name)
def __secret(self):
...
demo = new Demo(18)
print(demo.name)
print(demo.age)
异常
try:
# 尝试执行的代码
except: 错误类型1:
#针对错误类型1,对应的代码处理
pass
except: 错误类型2:
#针对错误类型2,对应的代码处理
pass
except (错误类型3, 错误类型4):
#针对错误类型3 和 4,对应的代码处理
pass
except Exception as result:
# 打印错误信息
print(result)
else:
# 没有异常才会执行的代码
pass
finally:
# 无论是否有异常,都会执行的代码
pass
模块
每个文件名都是模块名称
模块名应该用大驼峰方式命名
最好不要这样引入全部,因为如果当多个模块有相同的变量或方法时,不容易排查错误。
from module import *
也不推荐不换行。要每个语句占一行
import module1,import module2
别名
import module_name as alias_name
from module_name import foo as foo_alias
__ name__属性
__ name__属性可以做到,测试模块的代码只在测试情况下被导入时不会被执行。
__ name__是python的一个内置属性,记录着一个字符串:
如果是被其他文件导入的,__ name__就是模块名;
如果是当前执行的程序, __ name__ 是 __ main__
# 导入模块
# 定义全局变量
# 定义类
# 定义函数
# 在代码的最下方
def main():
#...
pass
#根据__main__判断是否执行下方代码
if __name__ == "__main__":
main()
包
包是包含多个模块的特殊目录,必须包含有 __ init __.py文件的文件夹。
包名的命名方式和变量名一致,小写字母 + _
要在外界使用包中的模块,需要在__ init __.py中指定对外界提供的模块列表
# 从当前目录 导入 模块列表
from . import module1
from . import module2
制作压缩包
1.在包中建立setup.py文件
from distutils.core import setup
setup(name="xxx", # 包名
version="1.0", #版本
description="xxx", #描述信息
long_description="xxx", #完整描述信息
author="xxx", #作者
author_email="xxx", #作者邮箱
url="xxx", #主页
pymodules=[
"包名.模块名",
"包名.模块名"])
2.构建模块
在终端进入包,执行
python3 setup.py build
3.生成发布压缩包
python3 setup.py sdist
安装模块
tar -zvxf 压缩包名
sudo python3 setup.py install