模块 module 是一个 Python 文件 以.py 结尾 包含了 Python 函数等语句。先导入 再使用 用模块.函数名调用。 例如1import time time.asctime ( ) 输出 Tue Jan 1621:5
一、PYTHON中的元素
1.基本元素
运算符: + - * / %等等
除法:
" / " 表示浮点数除法,返回浮点结果;
" // " 表示整数除法,返回不大于结果的一个最大的整数
运算顺序:先乘除 再加减 括号最优先
变量:就是一个标签:,由非数字开头的字母、数字、下划线组成,它的内容可以是数值、字符串、列表、元组和字典。
数值,就是数字。如a = 100
字符串,就是用一对双引号、或单引号引起来的内容,只要被引号引起来,就是字符串了。????
如: b = ”Hello World”
100是数值,而 ”100”是字符串。?? ???
转义字符
\t 表示 tab ? ???????????????? \n 表示 换行
%s 占位,用%后的变量替换
如:
a = 100
b = ” HelloWorld ”
print (” point = %s \n \”?%s?? \” ”? % (a, b)? )
打印出:
point=100
” HelloWorld ”
2.列表
例如:
c = [1,2,3,4,5,6,7]?
d = [”张三”,”李四”,”王五”]??
e =[1,2,3,”4”,”5”,d]
用 列表名[索引号] 索引列表中的元素 ???
d[0]表示列表d中的第1个元素“张三”
用列表名[起 : 止]表示切片,从列表中切出相应的元素 前闭后开
c[0:2] 切出 [1,2]
c[ : ] 切出[1,2,3,4,5,6,7]?
用列表名[起 : 止: 步长] 带步长的切片,步长有方向。
如c = [1,2,3,4,5,6,7] ,若切出 [5,4,3,2] 用c[4 :0 :-1]? ; 切出[5,4,3,2,1]用 c[4 ::-1] ;切出 [6,4,2] 用 c[-2 ::-2]; 从倒数第二个开始一直切到头,步长-2
修改:列表名 [ 索引号 ] = 新值
删除:del 列表名[ 索引号 ] ?
插入: 列表名.insert(插入位置索引号,新元素)
3.元组
一旦定义不能改变
f=(1,2,3)
4.字典
字典里放着 {键:值, 键:值, 键:值} n 个键值对
? ?dic={1:”123”,”name”:”zhangsan”,”height”:180}
用字典名[ 键 ] 索引字典中的值????
? dic[”name”] 表示字典dic 中键”name”对应的值”zhangsan”
修改:字典名 [ 键 ] = 新值
删除:del 字典名[ 键 ] ?
插入:字典名[ 新键 ] = 新值
二、python语法
?Python 代码是使用四个空格的缩进表示层次关系的
条件语句
一般用法
例如:
if a==1:
???? print(a)
else:
???? pass??????????????????????? # pass指不做任何处理
有多个判断条件时
例如:
if a==1 or b==1:?????????? # 用 or 和 and 连接
????? print(a)
else
????? pass
循环语句
for 变量 in range (开始值,结束值)?????? 例如:
?
for 变量 in 列表名??? 如:
M = ['a', 'p', 'o']
for i in M:
while?? 条件?? :
终止循环用 break
函数
函数(function):组织好的,可重复使用的,用来实现单一或相关联功能的代码段。
比如input()就是一个函数,可以直接使用函数,不用每次重新定义如何从控制台接收输入,所以函数是帮助实现代码复用的。
定义函数:def??? 函数名?? (参数表):
????????????????????? 函 数 体括号里的参数如果不需要可以为空
使用函数:函数名 (参数表)???
如 :input("please input your class number:")
定义:def hi_name(yourname):
? ? ? ? ? ? ? ? ? print ”Hello %s”%yourname 使用:hi_name(”zhangsan”)
会输出:Hello zhangsan
函数返回值: return ?
????def add(a,b):
?????????? return a+b
???? c=add(5,6)?????????????? # c 被赋值为 add的返回值 11?
内建函数:python解释器自带的函数
如:abs(-10) 返 回 10?
具体参见:https://blog.csdn.net/qq_39815222/article/details/109110645
模块
模块(module):是一个 Python 文件,以.py 结尾,包含了 Python 函数等语句。先导入,再使用,用模块.函数名调用。
例如1:
import time
time.asctime ( )
输出:'Tue Jan 1621:51:06 2018'
例如2:
import turtle # 导入 turtle 模 块
t = turtle.Pen ( ) #用 turtle 模块中的 Pen 类,实例化出一个叫做 t 的对象
t.forward (像素点)? #让 t 向前走多少个像素点
t.backward (像素点)? #让 t 向前走多少个像素点t.left (角度)???????? #让 t 左转多少角度 t.right (角度)??????? #让 t 右转多少角度t.reset ( ) # 让 t 复 位
包
包含有多个模块,如:from PIL import Image
变量作用域
局部变量:在函数中定义的变量,只在函数中存在,函数执行结束不可再用。全局变量,在函数前定义的变量,一般在整个代码最前面定义,全局可用。
三、类、对象和面向对象的编程
类(class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。物以类聚人以群分,类是可实例化出对象的模具。
实 例 化 : 对 象 = 类()? 如:t = turtle.Pen()
对象:是类实例化出的实体,对象实实在在存在,完成具体工作。
面向对象:程序员反复修改优化类,类实例化出对象,对象调用类里的函数执行具体的操作。
例如在上图中,有动物、哺乳动物和猫。 动物是一个类,他们具有共同的功能:呼吸、移动和吃东西。哺乳动物也是一个类,他们是动物类里的子类,是在动物类的基础上多了喂奶的功能。猫是哺乳动物类的一个子类,猫类在哺乳动物的基础上多了捉老鼠的功能。
类命名时第一个字母常大写,比如 Animals、Mammals 和 Cats 的首字母都大写了。这些类的右侧列出了每个类具有的功能:比如呼吸、移动和吃东西是动物这个类具备的功能,在计算机中用函数的形式表示。喂奶是哺乳动物的功能,是哺乳动物这个类里的函数。捉老鼠是猫类具有的功能,是猫类的函数。
√上面的类是下面类的父类;下面类是上面类的子类
√子类实例化出来的对象,可以使用自身和父类的函数与变量
类的定义:?
class 类名 (父类名) :?
????? pass
如果有父类,写在类名后面的括号里;如果没有父类,可以不写括号了。用关键词 pass 占个位置,之后再用具体函数把类补充完整。?
举例:classAnimals:
?????? pass
classMammals(Animals):
?????? pass
classCats(Mammals):
?????? pass
类里定义函数时,语法规定第一个参数必须是 self 。
init__函数,在新对象实例化时会自动运行,用于给新对象赋初值。
(1)将猫类实例化出一个叫 kitty 的对象,kitty 有自己的特征属性,比如身上有 10 个斑点:
kitty = Cats(10)??????? #实例化时运行?init?函数,给 spots 赋值,告知 kitty 有 10 个斑点
print”kitty.spots” #打印出 10
(2)kitty 可以做具体的工作,比如捉老鼠:
kitty.catch_mouse()#对象运行函数,必须用对象.函数名,调用类里的函数
??????????????????? #会运行 print ”catch mouse” 故打印出catch mouse
对象调用类里的函数,用对象.函数名;
对象调用类里的变量,用对象.变量名。
类内定义函数时,如调用自身或父类的函数与变量,须用self.引导, 应写为 self.函数名或 self.变量名。
代码验证:
补充:
Python 中虽然没有访问控制的关键字,例如 private、protected 等等。但是,在Python 编码中,有一些约定来进行访问控制。
单下划线、双下划线、头尾双下划线说明:?
_foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 frommodule import *
?foo:双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。
?foo__: 头尾双下划线定义的是特列方法,类似init() 之类的。
四、文件操作
可参见链接:https://www.runoob.com/python/python-files-io.html
文件写操作
import pickle
开:文件变量= open(”文件路径文件名”, ”wb”)
存:pickle.dump(待写入的变量,文件变量)
关:文件变量.close() ? ??
代码验证:??????????
文件读操作
import pickle
开:文件变量= open(”文件路径文件名”, ”rb”)
取:放内容的变量 =pickle.load(文件变量)
关:文件变量.close()??????????????????????
代码验证:
五、编程中的一些问题
1. 编程策略方法
全局变量自增自减的问题
目标是实现一个全局累加的功能,但python中没有static类型,调用全局变量老出错,最后通过在另一个py文件中定义该全局变量,本py文件中叫用该变量实现自增自检。
参考链接:https://www.jb51.net/article/154501.htm
无符号数和有符号数的计算
在python中,不能进行有符号数和无符号数相加;如果要进行此类操作,可以先将有符号数转换为无符号数,再进行操作,因为无论一个数是有符号数还是无符号数,在计算机中存储均是一样的。
例如,一个int8类型的0减去15的八位二进制数和一个uint8类型的0减去15的八位二进制数在计算机中存储均是一样的,虽然实际中第一个值为-15,第二个值为241。也就是说任意一个数和和这个二进制数相加、减、乘等出来的二进制结果都是一样的,不一样的只是由于最终对这个数类型定义不一样而导致的人为的认定结果不一样。
?2. error
UnboundLocalError: local variable 'vd' referenced before assignment
意思是是函数返回的值在函数中没有被赋值,出现该问题大概率是if...else...中返回值的赋值没有执行到。
OverflowError: Python int too large to convert to C long
溢出错误,有可能是因为一个numpy.uint64和一个numpy.uint8类型的数相加,结果值被自动定义为numpy.uint8类型,结果就溢出了
以上信息来源于网络,如有侵权,请联系站长删除。