python学习之入门

入门

Posted by YangSijie on June 11, 2018

Python入门

# 使用交互式进入python环境
python
>>> print("Hello, world!")

数值运算:

符号 含义
+
-
*
/
** 次方。如2**3 2^3=8
% 求余

用于字符串时:

符号 含义
+ 将若干字符串相连,如:”hello” + “world”
* 重复该字符串若干次,如:”hello” * 2

逻辑运算:

符号 含义
and
or
not

变量及变量类型:

变量 类型
a = 1 整形
a = 0.3 浮点型
a = “hello” 字符串
a = True 布尔型
type(a) type()这个函数可以查看当前变量的类型

序列:

  • 元组 tuple

a = (1, 0.3, “hello”, (1, 2), True, [3, 4]) 元组一旦建立,则无法修改其中的值!!!

  • 列表 list

a = [1, 0.3, “hello”, (1, 2), True, [3, 4]] 列表中的元素可以修改!!!

访问序列中的单个值:

>>> a[0]
1
>>> a[3][1]
2

访问序列中的多个值:

序列名[下限:上限:步长]

>>> a[:5]   # 下标0~4的元素,不包括5
>>> a[2:]   # 下标2, 3...
>>> a[0:5:2]    # 下标为0、2、4的元素

若下限>上限,如:

>>> a[2:0:-1]   # 下标为2、1(从2到0,步长为-1)
>>> a[-3]       # 倒数第三个元素

词典:

>>> a = {'Tom': 11, 'Sam': 57, 'lily': 100}
>>> a['Tom']
11

判断及循环结构:

这些结构当中,缩进很重要!!!

  • 判断结构:
if ...:
    ......
elif ...:
    ......
else:
    .....
  • 循环结构:
for 元素 in 序列:
    ......

range(n):可以用来使for循环执行n次

while ...:
    ......
  • 跳过和终止:

continue:跳过本次循环 break:终止整个循环体

函数:

  • 定义函数:
def test(a, b, c=10):
    ......

定义了一个test(a,b,c)函数,其中a和b以及c是形参,当调用该函数并且没有传递c的值时,c默认为10

  • 函数文档:
help(函数名)

自定义函数文档:””“……”””

  • 参数传递:

方法一:使用位置进行参数传递:

test(1, 2),则在test()函数中,a=1, b=2, c=10

方法二:使用参数名进行参数传递:

test(b=1, a=2, c=11),则再test()函数中,a=1, b=2, c=11

方法三:包裹传参

1.传递的为元组

def package_position(*tuple)
    ......
package_position(1, 4, 6)
# 在package_position()函数中,得到一个名为tuple的元组(1, 4, 6)

2.传递为词典

def package_position(**dict)
    ......
package_position(a=1, b=2, c=3)
# 在package_position()函数中,得到一个名为dict的词典('a':1, 'b':4, 'c':6)
  • 解包裹:

使用***

def unpackage(a, b, c):
    ......
args = (1, 3, 4)
unpackage(*args)

此处的args为一个tuple,但是unpackage有三个参数,因此此处使用*,是指将tuple中的元素拆成三个

def unpackage(a, b, c):
    ......
args = {"a": 1, "b": 2, "c": 3}
unpackage(**args)

此处的args为一个dict,但是unpackage有三个参数,因此此处使用**,是指将dict中的元素与参数对应

当函数的参数为容器(序列、词典)时,则函数内对该参数做的任何改变,也会影响到该函数外此容器的值!!!!(有点类似于指针的意思)

引入模块:

from 文件名 import 函数名|变量名|*

如:

# 文件名:first.py,函数名:laugh()
from first import laugh
for i in range(10)
laugh()

以及:

# 文件名:first.py,变量名:text
from first import text
print(text)

异常处理:

try:
    
except exception1:
    
except exception2:
    
else:
    
finally:
    

其中: try:将需要处理异常的程序包裹在其中 except:捕捉可能出现的异常 else:只要没有异常,则执行此语句 finally:无论有没有异常,都会执行该语句

异常名称 描述
BaseException 所有异常的基类
SystemExit 解释器请求退出
KeyboardInterrupt 用户中断执行(通常是输入^C)
Exception 常规错误的基类
StopIteration 迭代器没有更多的值
GeneratorExit 生成器(generator)发生异常来通知退出
SystemExit Python 解释器请求退出
StandardError 所有的内建标准异常的基类
ArithmeticError 所有数值计算错误的基类
FloatingPointError 浮点计算错误
OverflowError 数值运算超出最大限制
ZeroDivisionError 除(或取模)零 (所有数据类型)
AssertionError 断言语句失败
AttributeError 对象没有这个属性
EOFError 没有内建输入,到达EOF 标记
EnvironmentError 操作系统错误的基类
IOError 输入/输出操作失败
OSError 操作系统错误
WindowsError 系统调用失败
ImportError 导入模块/对象失败
KeyboardInterrupt 用户中断执行(通常是输入^C)
LookupError 无效数据查询的基类
IndexError 序列中没有没有此索引(index)
KeyError 映射中没有这个键
MemoryError 内存溢出错误(对于Python 解释器不是致命的)
NameError 未声明/初始化对象 (没有属性)
UnboundLocalError 访问未初始化的本地变量
ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError 一般的运行时错误
NotImplementedError 尚未实现的方法
SyntaxError Python 语法错误
IndentationError 缩进错误
TabError Tab 和空格混用
SystemError 一般的解释器系统错误
TypeError 对类型无效的操作
ValueError 传入无效的参数
UnicodeError Unicode 相关的错误
UnicodeDecodeError Unicode 解码时的错误
UnicodeEncodeError Unicode 编码时错误
UnicodeTranslateError Unicode 转换时错误
Warning 警告的基类
DeprecationWarning 关于被弃用的特征的警告
FutureWarning 关于构造将来语义会有改变的警告
OverflowWarning 旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning 关于特性将会被废弃的警告
RuntimeWarning 可疑的运行时行为(runtime behavior)的警告
SyntaxWarning 可疑的语法的警告
UserWarning 用户代码生成的警告

类:

class class_name(object):
    
    def method_name(self,...):  # 定义类方法,第一个参数必须是代表自己的self!!!
        ……
    def __init__(self,...): # 特殊方法(魔法方法),前后两个下划线,每次创建对象都会调用该方法
        ……

对象:

object_name = class_name()

继承:(子类对象获得父类的方法以及属性)

class child_name(father_name):
    ……

属性/方法 覆盖:

子类中具有与父类同名的方法/属性时, 使用子类生成对象时,调用的是子类的方法/属性; 使用父类生成对象时,调用的是父类的方法/属性。

调用父类的方法:(使用super()即可)

子类中可以使用super().method_name调用父类的方法/属性


列表对象及相关方法:([…])

a = [1, 2, 3, 5, 9.0, “Good”, -1, True, False, “Bye”]

方法 方法含义
a.count(5) 计数,看有多少个元素5
a.index(3) 获取元素3第一次出现的下标
a.append(6) 在列表最后添加一个新元素6
a.sort() 排序;数值型和str型混合的列表无法排序
a.reverse() 颠倒次序
a.pop() 去除最后一个元素,并将其返回
a.remove(2) 去掉第一次出现的元素2
a.insert(0, 9) 在a的下标0处添加元素9
a.clear() 清空列表

元祖与字符串对象及相关方法:

字符串特殊的元祖,对字符串的“修改”实际上是将原字符串删除,再生成新的字符串的过程。

str = "Hello World!"
sub = "World"
字符串方法 解释
str.count(sub) 返回:sub在str中出现的次数
str.find(sub) 返回:从左开始,查找sub在str中第一次出现的位置。若找不到,返回-1
str.rfind(sub) 返回:从右开始,查找sub在str中第一次出现的位置。若找不到,返回-1
str.index(sub) 返回:与find()类似,仅在出错时,返回的是错误
str.rindex(sub) ……
str.isalnum() 返回:若所有字符都是字母或数字,True
str.isalpha() 返回:若所有字符都是字母,True
str.isdigit() 返回:若所有字符都是数字,True
str.istitle() 返回:若所有词(以空格为分隔符)的首字母都是大写,True
str.isspace() 返回:若所有字符都是空格,True
str.islower() 返回:若所有字符都是小写字母,True
str.isupper() 返回:若所有字符都是大写字母,True
str.split([sep,[max]]) 返回:从左开始,以sep为分隔符,最多分割max次,返回一个列表
str.rsplit([sep,[max]]) ……从右开始……
str.join(s) 返回:将str作为分隔符,插入s,形成新的字符串
str.strip([sub]) 返回:去掉字符串开头和结尾的sub
str.replace(sub,new_sub) 返回:用new_sub代替原串中的sub
str.capitalize() 返回:将str的第一个字母大写
str.lower() 返回:将str全部字符改为小写
str.upper() ……大写
str.swapcase() 返回:将str中大写变小写,小写变大写
str.title() 返回:将str中每个词(以空格为分隔)的首字母大写
str.center(width) 返回:长度为width的串,并将原串至于该串中间
str.ljust(width) ……左边
str.rjust(width) ……右边

词典对象及相关方法:

for k in dict.keys():   # 词典的keys()方法,用于获取词典的元素的关键字
    print(dict[k])

for v in dict.values(): # 词典的values()方法,用于获取词典的元素的值
    print(v)

for k,v in dict.items(): # 词典的items()方法,用于获取词典的元素的关键字及值
    print(k,v)

dict.clear()             # clear()方法,清空词典

循环对象:

内置函数iter()可以将序列转变为一个循环对象,如:a = iter([1, 2]) 循环对象可以调用__next__()方法,直到出现StopIteration出现,停止调用__next__()方法 在for循环中,会自动调用__next()方法 借助生成器,自定义循环对象

def generator_name():
    a = 100
    yield a
    a = a*8
    yield a
    yield 1000
for i in generator_name():
    print(i)    # 第一次输出100,之后输出800,再输出1000