Python中自己不熟悉的知识点记录

重点笔记:

Python  它是动态语言

动态语言的定义:动态编程语言   是   高级程序设计语言   的一个类别,在计算机科学领域已被广泛应用。它是一类   在 运行时可以改变其结构的语言   :例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言目前非常具有活力。众所周知的   ECMAScript   (   JavaScript   )便是一个动态语言,除此之外如   PHP   、   Ruby   、Python   等也都属于动态语言,而   C   、   C++   等语言则不属于动态语言。

 

Python中变量可以不指定类型,会自动根据赋值语句来决定类型

同时,使用前必须赋值,在赋值的同时变量也就创建了

 

 

Python 标识符

在 Python 里,标识符由字母、数字、下划线组成。

在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。

Python 中的标识符是区分大小写的。

以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。

以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。

 

python中主要存在四种命名方式

1、object #公用方法

2、_object #半保护

                 #被看作是“protect”,意思是只有类对象和子类对象自己能访问到这些变量,

                  在模块或类外不可以使用,不能用’from module import *’导入。

                #__object 是为了避免与子类的方法名称冲突, 对于该标识符描述的方法,父

                  类的方法不能轻易地被子类的方法覆盖,他们的名字实际上是

                  _classname__methodname。

3、_ _ object  #全私有,全保护

                       #私有成员“private”,意思是只有类对象自己能访问,连子类对象也不能访

                          问到这个数据,不能用’from module import *’导入。

4、_ _ object_ _     #内建方法,用户不要这样定义

 

python中的listtupledictset

1list

(1)构造list,使用[ ]把list的所有元素都括起来就是一个列表,用变量L表示。其中的元素不要求是同一种数据类型。

(2)列表中元素是有序的。可以通过索引来访问。

(3)访问list的元素,L[0]:表示列表中的第一个元素,L[-1]:表示列表中的最后一个元素。

         L[起始索引:终止索引]:表示访问列表中的多个元素,包含头,不包含尾。

(4)列表是可以被修改的,包括添加元素,删除元素,替换元素。

1)添加元素:L.append(元素)、L.insert(元素插入到列表中的位置,元素)

2)删除元素:L.pop()<==>L.pop(-1),L.pop(要删除元素在列表中的位置)、L.remove(要删除元素),删除列表中第一次匹配到的元素

3)替换元素:L[要替换元素在列表中的位置]=新的元素值

(5)计算列表的长度:len(L)

(6)计算列表中某一个元素在列表中出现的次数:L.count(要统计的元素)

(7)列表拼接,用+,L1=[1,2],L2=[3,4],L1+L2=[1,2,3,4]

(8)列表中元素复制,用*,L= [2,3],L*3 = [2,3,2,3,2,3]

2tuple

(1)构造tuple,使用()把tuple的所有元素都括起来就是一个元组,用变量T表示。python规定只有单个元素的元组应表示成(元素,),避

免歧义。其中的元素不要求是同一种数据类型。

(2)元组中元素是有序的。可以通过索引访问。

(3)访问tuple的元素,T[0]:表示元组中的第一个元素,T[-1]:表示元组中的最后一个元素。

(4)元组是不可以被修改的,因此它没有append()、insert()、pop()等方法。

注意:元组中可以包含列表,如T= (1,2,[4,5]),

T[2] = [ ],错误

T[2][0] =5,正确

3dict

(1)构造dict,使用{ }把dict所有元素都括起来就是一个字典,用D表示。D中元素的形式是key:value的形式。其中的key或者value都不要求是

同一种数据类型。

(2)字典是 Python 语言中唯一的映射类型。

(3)字典中元素是无序的。不可以通过索引访问。

(4)访问dict的元素,使用D[key]来查找对应的value。如果key不存在,则会报错。为避免报错:

1)访问前先判断

if key in D:

print(D[key])

2)使用get()方法

print(D.get[key]),key不存在会输出None

(5)字典是可以被修改的。D[key] = 新的value,如果key不存在,则会想字典中添加这一键值对。

注意:

字典的一个最明显的特点是查找速度快,无论字典中有多少个数据,查找的速度都是一样的,因为它是按照key来查找的。但是它占用的内存大。典型的以空间换时间的思想。

4set

(1)构建set,S = set(传入一个列表),或者S = {元素1,元素2,....}。其中的元素不要求是同一种数据类型。如:

S= set([1,2,3,3,4,5])

print(S) #{1,2,3,4,5}

注意:创建空集合只能使用S = set(),而不能使用S = { },这是用来创建空字典的。

(2)集合中元素是无序的。不可以通过索引来访问元素。

(3)集合是可以被修改的。

(4)添加元素和删除元素。

1)S.add(元素)

2)S.remove(元素)。删除之前要进行判断:if 元素 in S: S.remove(元素),否则会报错。

 

 

复制赋值深浅

=、   import copy     a=3 b=copy.copy(a)  都是浅拷贝,a变,b也变;

a.copy(),     copy.deepcopy(a)       都是深拷贝,a变,b不变。

1、b = a: 赋值引用,a 和 b 都指向同一个对象。

 

2b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

 

b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

 

 

 

 

return会跳出函数(遇到它,函数就结束) return可以返回多个值,执行到return时,程序将停止函数内return后面的语句

break会跳出当前循环

continue 跳出当前循环并执行下一次

 

函数使用

append 列表尾增加元素 insert 列表某个位置插入元素 sort 列表排序默认升序

 

下列程序打印结果为( [1,2,3,4,5,5,7 ]    )
nl = [1,2,5,3,5]

nl.append(4)
nl.insert(0,7)
nl.sort()

print nl

 

第一步 nl=[1,2,5,3,5,4]

第二步 nl=[7,1,2,5,3,5,4]

第三步 nl=[1,2,3,4,5,5,7]

 

指定对文件打开方式即文件内容操作方式

b 二进制模式

r 只读,指针将会放在文件的开头

rb 二进制只读,指针将会放在文件的开头

r+ 读写,指针将会放在文件的开头

rb+ 二进制读写,指针将会放在文件的开头

w 写入, 如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件

wb 二进制写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等

w+ 读写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb+ 二进制读写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等

a 追加,如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入

ab 二进制追加,如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入

a+ 读写,如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+ 二进制读写,如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

 

 

Python 生成随机数、随机字符串

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import random
import string

# 随机整数:
print random.randint(1,50)

# 随机选取0到100间的偶数:
print random.randrange(0, 101, 2)

# 随机浮点数:
print random.random()
print random.uniform(1, 10)

# 随机字符:
print random.choice('abcdefghijklmnopqrstuvwxyz!@#$%^&*()')

# 多个字符中生成指定数量的随机字符:
print random.sample('zyxwvutsrqponmlkjihgfedcba',5)

# 从a-zA-Z0-9生成指定数量的随机字符:
ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))
print ran_str

# 多个字符中选取指定数量的字符组成新字符串:
print ''.join(random.sample(['z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a'], 5))

# 随机选取字符串:
print random.choice(['剪刀', '石头', '布'])

# 打乱排序
items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print random.shuffle(items)

 

posted @ 2020-04-01 09:14  天天开心1?  阅读(252)  评论(0)    收藏  举报