您的位置:首页 > 编程语言 > Python开发

基础忘了?看看这里,带你重温python学习路

2020-06-08 04:22 113 查看

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没有真正意义上的私有属性和私有方法
在给属性、方法命名时,实际是对名称做了一些特殊处理使得外界无法访问到,
处理方法: 在名称前加上_类名=>>_类名__名称

面向对象三大特性

  1. 封装 根据职责将属性和方法封装到一个抽象的类中
  2. 集成 实现代码的重用,相同的代码不语音重复编写
  3. 多态 不同的对象调用相同的方法,产生不同的执行结果增加代码灵活性

父类的私有属性和私有方法

  1. 子类对象不能在自己的方法内部。直接访问父类的私有属性或私有方法
  2. 字类对象可以通过符类的公有方法间接访问到私有属性或私有方法

新式类和旧式类(经典)类

  • 新式类: 以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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: