基础忘了?看看这里,带你重温python学习路
python变量类型
变量赋值
python允许同时为多个变量赋值
a = b = c = 1
以上实例,创建一个整型对象,值为1.三个变量被分配到相同的内存空间上。
标准数据类型
python有五个标准的数据类型
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
python数字
不可变类型,意味着改变数字数据类型回分配一个新的对象 当赋值的时候,Number就会被创建
var1 = 1 var2 = 10
可以使用del语句来删除一些对象的引用
del var1
python支持四种不同的数字类型:
- int(有符号整型)
- long(长整型) 只在python2中,python3被改成了用int代替
- float(浮点型)
- complex(复数) 可以用a+bj或者用complex(a,b)
函数 | 返回值(描述) |
---|---|
abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 |
ceil(x) | 返回数字的上入整数,如math.ceil(4.1)返回5 |
cmp(x,y) | 如果x<y 返回-1 ,如果x == y返回0 ,如果x>y 返回1 |
exp(x) | 返回e的x次幂 |
fabs(x) | 返回数字的绝对值,如math.fabs(-10)返回10.0 |
floor(x) | 返回数字的下舍整数,如math.floor(4.9) 返回4 |
modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 |
python字符串
字符串或串(String)是由数字字母下划线组成的一串字符
s = "zhangxiong"
字符串列表有2中取值顺序,为什么这么说,是为了铺垫切片的知识比如
b l i n k 左到右:0 1 2 3 4 右到左: -5 -4 -3 -2 -1
这里先拿一个例子
>>> s = 'abcdef' >>> s[1:5] # python中的有关下标的结构都满足左闭右开原则,是因为计算机对比大小很麻烦,比较相等就容易很多。 'bcde' >>> s[1:5:2] 'db'
这里就粗略的说一下,点击这里看更加详细的python切片和部分深浅拷贝
方法 | 描述 |
---|---|
String.capitalize() | 把字符串的第一个字符大写 |
String.center(width) | 返回一个原字符串居中,并使用空格填充至长度width的新字符串 |
String.count(str,beg=0,end=len(String)) | 返回str在string里面出现的次数,如果beg或者end指定则返回指定范围内str出现的个数 |
String.endswith(obj,beg=0,end=len(String)) | 检查字符串是否以obj技术,如果beg或者end指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. |
String.expandtabs(tabsize=8) | 吧字符串string中的tab符号转为空格,tab符号默认的空格数是8 |
String.find(str,beg=0,end=len(String)) | 检查str是否包含在string中,如果beg和end指定范围,则检查是否包含在指定范围内,如果是,返回索引值,否则返回-1 |
String.format() | 格式化字符串 |
string.index(str,beg=0,end=len(String)) | 跟find()方法一样,只不过如果str不在 string中会报一个异常. |
String.isalnum() | 如果string全部是字母或者是数字返回True,否则返回False |
String.isalpha() | 如果string全部都是字母,返回True |
String.isdigit() | 如果string全部都是数字返回True |
String.islower() | 都是小写返回True |
String.isnumeric() | 只包含数字,返回True |
String.isspace() | 如果只包含空格,返回True |
String.istitle() | 如果String是标题化的返回True |
String.isupeer() | 如果字符都是大写,返回True |
String.join(seq) | 用string连接seq内部的元素 |
String.lower() | 转化string中所有大写字符为小写 |
string.lstrip() | 截取string左边的空格 |
string.upper() | 转换string中的小写字母为大写 |
string.swapcase() | 翻转大小写 |
String.split(str="",num=string,count(str)) | 以str为分隔符切片 |
python列表
List(列表)是python用的比较多的数据类型了,它牛批在可以完成大多数集合类的数据结构,它里面可以包含字符串,数字包含嵌套在列表内,同样的,它也有切片的操作,具体的内容看字符串那一节的介绍。
访问列表中的值
list1 = [1,2,3,4,5,6] list1[0]
更新列表
list = [] list.append("Google")
删除列表元素
list1 = [1,2,3,4,5,6] del list1[2]
python列表
+
*
len([1,2,3]) [1,2,3]+[4,5,6] ['HI']*4 3 in [1,2,3] for x in [1,2,3]: print(x)
列表方法
方法 | 描述 |
---|---|
list.append(obj) | 在列表末尾添加新的对象 |
list.count(obj) | 统计某个元素的列表中出现的次数 |
list.extengd(seq) | 在列表末尾一次型追加另一个序列中的多个值 |
list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置 |
list.insert(index,obj) | 将对象插入列表 |
list.pop([index=-1]) | 移除列表中的一个元素,并且返回该元素的值 |
list.remove(obj) | 移除列表中某个值的第一个匹配项 |
list.reverse() | 反向列表中元素 |
list.sort(cmp=None,key=None,reverse = False) | 对原列表进行排序 |
python 元组
元组是另一个数据类型,类似List(列表)
元组用()标识,内部元素用逗号隔开,但是不能二次赋值,相当于只读。
方法 | 描述 |
---|---|
cmp() | 比较两个元组的元素 |
len(tuple) | 计算元组元素个数 |
max(tuple) | 返回元组中元素最大值 |
min(tuple) | 返回元组中元素最小值 |
python 字典
注意 字典无序 通过键取值
添加修改元素
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} dict['Age'] = 8 # 更新 dict['School'] = "RUNOOB" # 添加
方法 | 描述 |
---|---|
dict.clear() | 删除字典内所有元素 |
dict.copy() | 返回一个字典的浅复制 |
dict.fromkeys(seq[,val]) | 创建一个字典,以序列seq中元素左字典的键,val为字典所有键对应的初始值 |
dict.get(key,default=None) | 返回指定键的值,如果值不在字典中返回default |
dict.has_key(key) | 如果键在字典返回true,否则返回false |
dict.items() | 以列表返回可遍历的(键, 值) 元组数组 |
dict.keys() | 以列表返回一个字典所有的键 |
dict.setdefault(key,default=None) | 和get()类似,如果没有这个键,会设置,并复制default |
dict.update(dict2) | 把字典dict2的键/值对更新到dict里 |
dict.values() | 以列表返回字典中的所有值 |
pop(key[,default]) | 删除key所对应的值,返回值为被删除的值 |
popitem() | 返回并删除字典中的最后一对键和值 |
删除字典元素
del dict['Name'] # 删除键是'Name'的条目 dict.clear() # 清空字典所有条目 del dict # 删除字典
python数据类型转换
函数 | 描述 |
---|---|
int(x[,base]) | 将x转换为一个整数 |
long(x [,base] ) | 将x转换为一个长整数 |
repr(x) | 将对象 x 转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
dict(d) | 创建一个字典。d 必须是一个序列 (key,value)元组. |
以上几个都是我自己比较生疏的,挑几个要特别注意的来说
repr(x)
>>>dict = {'12','212','212','212'} >>>repr(dict) "{'12','212','212','212'}" >>>type(repr(dict)) >>><class 'str'>
eval()
>>>x = 7 >>>eval('3*x') 21 >>>eval('pow(2,2)') 4
dict()
>>>dict() # 创建空字典 {} >>> dict(a='a', b='b', t='t') # 传入关键字 {'a': 'a', 'b': 'b', 't': 't'} >>> dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函数方式来构造字典 {'three': 3, 'two': 2, 'one': 1} >>> dict([('one', 1), ('two', 2), ('three', 3)]) # 可迭代对象方式来构造字典 {'three': 3, 'two': 2, 'one': 1}
python算术运算符
运算符 | 描述 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取模 |
** | 幂 |
// | 取整 |
python逻辑运算符
运算符 | 逻辑表达式 | 描述 |
---|---|---|
and | x and y | 与运算如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 |
or | x or y | 或运算如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值 |
not | not x | 布尔非 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True |
python成员运算符
运算符 | 描述 |
---|---|
in | 如果找到值返回True |
not in | 如果没有找到值返回True |
python 身份运算符
运算符 | 描述 | 实例 |
---|---|---|
is | is是判断两个标识符 | x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False |
is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。 |
python函数
参数
以下是调用函数时可使用的正式参数类型:
- 必备参数
- 关键字参数
- 默认参数
- 不定长参数
必备参数
参数必输,不输报错
def printme(str): print(str) return printme()
Traceback (most recent call last): File "test.py", line 11, in <module> printme() TypeError: printme() takes exactly 1 argument (0 given)
关键字参数
def sure(name,age): print(name) print(age) return # 关键字参数顺序不重要 sure(age = 50, name = "熊")
默认参数
def defaultprint(name , age=30) print(name) print(age) return # 默认参数可以输也可以不输 defaultprint(age = 50, name = "熊") defaultprint(name = "张")
不定长参数
def info(arg1, *args): for var in args: print(var) return
匿名函数
sum = lambda arg1,arg2: arg1 + arg2 sum(10,20)
变量作用域
total = 0 # 这是一个全局变量 # 可写函数说明 def sum( arg1, arg2 ): #返回2个参数的和." total = arg1 + arg2 # total在这里是局部变量. print ("函数内是局部变量 : ", total) return total
python 文件i/o
先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写
file object = open(file_name [, access_mode][, buffering])
各个参数的细节如下:
- file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
- access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®。
- buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
模式 | 描述 |
---|---|
t | 文本模式(默认) |
x | 写模式,新建一个文件,如果该文件已存在就报错 |
b | 二进制模式 |
+ | 打开一个文件进行更新(可读可写) |
U | 通用换行模式(不推荐) |
r | 以只读方式打开。文件指针在文件开头 |
面向对象
析构函数
__del__:在这个对象的引用计数为0的时候,触发
__doc__:输出对象内部的说明文字
__str__:默认情况下会输出这个对象是由哪个类创建的,以及内存中的地址就是通常情况下我们直接print的时候看到东西,这个方法只能返回一个字符串
__mro__:主要用于在多继承时判断方法、属性的调用路径
私有属性和私有方法
- 私有属性 就是对象不希望公开的属性
- 私有方法 就是对象不希望公开的方法
定义属性或方法时,在属性或者方法名前,增加__
但是python没有真正意义上的私有属性和私有方法
在给属性、方法命名时,实际是对名称做了一些特殊处理使得外界无法访问到,
处理方法: 在名称前加上_类名=>>_类名__名称
面向对象三大特性
- 封装 根据职责将属性和方法封装到一个抽象的类中
- 集成 实现代码的重用,相同的代码不语音重复编写
- 多态 不同的对象调用相同的方法,产生不同的执行结果增加代码灵活性
父类的私有属性和私有方法
- 子类对象不能在自己的方法内部。直接访问父类的私有属性或私有方法
- 字类对象可以通过符类的公有方法间接访问到私有属性或私有方法
新式类和旧式类(经典)类
- 新式类: 以object为基类,推荐使用
- 经典类:不以object为基类
python3中都是新式类。
单例设计模式
- 目的–让类创建对象,在系统中只有唯一一个实例
- 每一次执行类名()返回对象,内存地址式相同的
__new__方法
使用类名()创建对象的时候首先会调用__new__方法为对象分配空间,式一个由object基类提供的内置静态方法,主要为对象分配空间,返回对象的引用
重写
__new__的时候一定要return super().
__new__(cls) 就是为了返回引用对象
class player(object): # 定义类属性记录单例对象引用 instace = None def __new__(cls,*args,**kwargs): # 判断类属性是否为空,如果为空说明没有创建过 if cls.instance is None: cls.instance = super().__new__(cls) return cls.instance
- 学完python基础,想学习爬虫的新手,这里有你想要的东西
- 零基础不知道怎么学习Python?不妨花三分钟看看这篇文章吧
- 零基础学习python,可以看看《这本书》
- 零基础初学Python,看看学习路线是怎么规划的
- python基础学习
- python基础学习-2(if、for)
- javascript 语法基础 想学习js的朋友可以看看
- python 3.0学习笔记之二------python基础小知识
- python学习--基础
- python基础学习-3(函数)
- Python基础教程,一本可以帮助你快乐学习Python的好书
- 【C012】Python - 基础教程学习(三)
- python学习日记2--基础语法篇
- Python学习笔记 02 Python基础
- python基础学习-6(正则)
- python基础学习笔记(九)
- python基础学习-7(简单爬虫)
- python基础学习笔记(十一)
- python学习笔记-第1章节 基础知识
- python基础学习