重点笔记:

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(,) # 随机选取0到100间的偶数:
print random.randrange(, , ) # 随机浮点数:
print random.random()
print random.uniform(, ) # 随机字符:
print random.choice('abcdefghijklmnopqrstuvwxyz!@#$%^&*()') # 多个字符中生成指定数量的随机字符:
print random.sample('zyxwvutsrqponmlkjihgfedcba',) # 从a-zA-Z0-9生成指定数量的随机字符:
ran_str = ''.join(random.sample(string.ascii_letters + string.digits, ))
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'], )) # 随机选取字符串:
print random.choice(['剪刀', '石头', '布']) # 打乱排序
items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print random.shuffle(items)

Python中自己不熟悉的知识点记录的更多相关文章

  1. 归纳整理Python中的控制流语句的知识点

    归纳整理Python中的控制流语句的知识点 Python 解释器在其最简单的级别,以类似的方式操作,即从程序的顶端开始,然后一行一行地顺序执行程序语句.例如,清单 1 展示了几个简单的语句.当把它们键 ...

  2. python中类似c++静态方法的一个记录

    个人学习c++出身,在后面的工作中接触到python,见到一些classmethod的字眼有点疑惑,所以进行一些记录. 都知道的是,c/c++中有着静态成员,静态方法的存在,比如: class A: ...

  3. python中使用正则表达式处理文本(仅记录常用方法和参数)

    标准库模块 python中通过re模块使用正则表达式 import re 常用方法 生成正则表达式对象 compile(pattern[,flags]) pattern:正则表达式字符串 flags: ...

  4. python中利用logging包进行日志记录时的logging.level设置选择

    之前在用python自带的logging包进行日志输出的时候发现有些logging语句没有输出,感到比较奇怪就去查了一下logging文档.然后发现其在设置和引用时的logging level会影响最 ...

  5. angular4开发过程中遇到的问题和知识点记录

    1. angular2中的属性有什么区别,为什么会报错呢? 元素上有两种属性:property和attribute,attribute是通过getAttribute()和setAttribute()方 ...

  6. python中的装包与拆包

    python中的装包与拆包 *args和 **kwargs是在python的代码中经常用到的两个参数,初学者对这两个参数的理解可能仅仅限于*args是用于接收多余的未命名参数,**kwargs用于接收 ...

  7. python中字符串的几种表达方式(用什么方式表示字符串)

    说明: 今天在学习python的基础的内容,学习在python中如何操作字符串,在此记录下. 主要是python中字符串的几种表达,表示方式. python的几种表达方式 1 使用单引号扩起来字符串 ...

  8. python中字符串的四种表达方式

    今天在学习python的基础的内容,学习在python中如何操作字符串,在此记录下. 主要是python中字符串的几种表达,表示方式. python的几种表达方式 1 使用单引号扩起来字符串 > ...

  9. 通过编写聊天程序来熟悉python中多线程及socket的用法

    1.引言 Python中提供了丰富的开源库,方便开发者快速就搭建好自己所需要的应用程序.本文通过编写基于tcp/ip协议的通信程序来熟悉python中socket以及多线程的使用. 2.python中 ...

随机推荐

  1. GitHub上最火的SpringCloud微服务商城系统项目,附全套教程

    项目介绍 mall-swarm是一套微服务商城系统,采用了 Spring Cloud Greenwich.Spring Boot 2.MyBatis.Docker.Elasticsearch等核心技术 ...

  2. 2020-06-18:ZK的分布式锁怎么实现?

    福哥答案2020-06-18: Zk分布式锁有两种实现方式一种比较简单,应对并发量不是很大的情况.获得锁:创建一个临时节点,比如/lock,如果成功获得锁,如果失败没获得锁,返回false释放锁:删除 ...

  3. 2020-05-31:假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如何将它们全部找出来?

    福哥答案2020-05-31: 使用keys指令可以扫出指定模式的key列表.对方接着追问:如果这个redis正在给线上的业务提供服务,那使用keys指令会有什么问题?这个时候你要回答redis关键的 ...

  4. C#LeetCode刷题之#11-盛最多水的容器(Container With Most Water)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3615 访问. 给定 n 个非负整数 a1,a2,...,an,每 ...

  5. JavaScript 中 Blob对象的初步认识

    Blob Binary Large Object的缩写,二进制大对象 虽然在前端中开发并不常见,但是实际上MySql数据库中,可以通过设置一个Blob类型的数据来存储一个Blob对象的内容 语法 le ...

  6. python处理转载博客html

    前景 在转载别人博客的时候通常我们会通过复制html然后放到编辑器里面, 但是通常html里有很多杂七杂八的东西, 比如script, svg这些标签导致排版出现问题 例如由lu标签引起的 由svg标 ...

  7. Linux内核之 内核同步

    上文我们介绍过进程调度,Linux内核从2.6版本开始支持内核抢占,所以内核很多代码也需要同步保护. 一.同步介绍 1.临界区与竞争条件 所谓临界区(critical regions)就是访问和操作共 ...

  8. Spring Security报异常 Encoded password does not look like BCrypt

    控制台报错: Encoded password does not look like BCrypt 意思是前端传回去的密码格式与数据库里的密码格式不匹配,这样即使密码正确也无法校验.自然也就无法登录. ...

  9. Cheese

    题面: 现有一块大奶酪,它的高度为 h,它的长度和宽度我们可以认为是无限大的,奶酪 中间有许多 半径相同 的球形空洞.我们可以在这块奶酪中建立空间坐标系,在坐标系中, 奶酪的下表面为z=0,奶酪的上表 ...

  10. topic的相关操作

    1.建立topic cd 进入kafka的安装根目录的bin目录下 执行:./kafka-topics.sh --zookeeper ip:port,ip:port,ip:port/kafka-tes ...