欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python3基础入门-知识点简记

程序员文章站 2022-06-17 08:53:15
1、基础语法 编码、标识符、保留字、注释、行与缩进... 2、变量类型 (1)Python3有6个标准的数据类型: Numbers(数字) 数字数据类型用于存储数值 不可改变的数据类型 可细分为 int、float、bool、complex(复数),没有python2中的long String(字符 ......

1、基础语法

编码、标识符、保留字、注释、行与缩进...

2、变量类型

(1)Python3有6个标准的数据类型:

  •  Numbers(数字)

     数字数据类型用于存储数值

     不可改变的数据类型

    可细分为 int、float、bool、complex(复数),没有python2中的long

  •  String(字符串)

      字符串用单引号(')或双引号(")括起来,同时使用反斜杠(\)转义特殊字符

     变量[头下标:尾下标]

     反斜杠可以用来转义,使用r可以让反斜杠不发生转义。

    字符串可以用+运算符连接在一起,用*运算符重复。

    Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。

      Python中的字符串不能改变。

  •  List(列表)

     列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

     列表是写在方括号([])之间、用逗号分隔开的元素列表。

    和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

    列表截取的语法格式:变量[头下标:尾下标],索引值以 0 为开始值,-1 为从末尾的开始位置。

  •  Tuple(元组)

    元组(tuple)与列表类似,不同之处在于元组的元素不能修改。

    元组写在小括号(())里,元素之间用逗号隔开。

    元组中的元素类型也可以不相同

  •  Sets(集合)

     集合(set)是一个无序不重复元素的序列

     基本功能是进行成员关系测试和删除重复元素

    可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

    创建格式:parame = {value01,value02,...} 或者 set(value)

  •  Dictionary(字典)

    列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

    字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合

    键(key)必须使用不可变类型

    在同一个字典中,键(key)必须是唯一

 

(2)数据类型转换

常用函数

描述

将x转换为一个整数

将x转换到一个浮点数

创建一个复数

将对象 x 转换为字符串

将对象 x 转换为表达式字符串

用来计算在字符串中的有效Python表达式,并返回一个对象

将序列 s 转换为一个元组

将序列 s 转换为一个列表

转换为可变集合

创建一个字典。d 必须是一个序列 (key,value)元组。

转换为不可变集合

将一个整数转换为一个字符

将一个字符转换为它的整数值

将一个整数转换为一个十六进制字符串

将一个整数转换为一个八进制字符串

 

3、注释

l  单行注释以 # 开头

l  多行注释用三个单引号 ''' 或者三个双引号 """ 将注释括起来

 

4、运算符

(1)算术运算符: +、-、*、/、%、**(幂 - 返回x的y次幂,如a**b 为10的21次方)、//(取整除 - 返回商的整数部分);

(2)比较运算符:==、!=、>、<、>=、<=

(3)赋值运算符:=、+=、-=、*=、/=、%=、**=(幂赋值运算符)、//=

(4)位运算符:&、|、^、~、<<、>>

(5)逻辑运算符:and、or、not

(6)成员运算符:in(如果在指定的序列中找到值返回 True,否则返回 False),not in(与in相反)

(7)身份运算符:is(is 是判断两个标识符是不是引用自一个对象)、is not(is not 是判断两个标识符是不是引用自不同对象)

(8)运算符优先级(从高到低):

运算符

描述

**

指数 (最高优先级)

~ + -

按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)

* / % //

乘,除,取模和取整除

+ -

加法减法

>> <<

右移,左移运算符

&

位 'AND'

^ |

位运算符

<= < > >=

比较运算符

<> == !=

等于运算符

= %= /= //= -= += *= **=

赋值运算符

is is not

身份运算符

in not in

成员运算符

not or and

逻辑运算符

 

5、条件控制

if 语句:

  

python3基础入门-知识点简记
 1 if condition_1:   
 2 
 3      statement_block_1 
 4 
 5   elif condition_2:   
 6 
 7     statement_block_2 
 8 
 9   else:     
10 
11     statement_block_3
View Code

 

 

6、循环语句

(1)while

python3基础入门-知识点简记
while 判断条件:

       语句

else:

       statement_block  
View Code

 

注:while … else 在条件语句为 false 时执行 else 的语句块。

 

(2)for

python3基础入门-知识点简记
for <variable> in <sequence>:  
     <statements>  
else:      
     <statements>
View Code

 

 

 

(3)break、continue与pass 

 break语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。

continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。

pass 不做任何事情,一般用做占位语句。

 

7、函数

(1)函数定义:

python3基础入门-知识点简记
def 函数名(参数列表):   

    函数体
View Code

 

 

(2)参数传递:

实际传递的是可变类型(list,dict )和不可变类型(strings, tuples,  numbers和Sets )。

 

(3)参数类型:

1) VAR_POSITIONAL

参数类型为VAR_POSITIONAL时,即*args参数(接收的是一个tuple),只能通过位置传值,如:

python3基础入门-知识点简记
def func_a(*args):

           print(args)

 

# 通过位置传值

func_a('alex', 'timeflow')
View Code

 

2)VAR_KEYWORD

参数类型为VAR_KEYWORD,即 **kwargs参数(接收的是一个dict),只能通过关键字传值,如:

python3基础入门-知识点简记
def func_b(**kwargs):

          print(kwargs)

 

# 通过关键字传值

func_b(a=1, b=2)
View Code

 

3)POSITIONAL_OR_KEYWORD

此参数前面没有VAR_POSITIONAL类型参数,可以通过位置或关键字传值,如:

python3基础入门-知识点简记
def func_c(args):

         print(args)

 

# 通过位置传值

func_c(1)

# 通过关键字传值

func_c(args=1)
View Code

 

4)KEYWORD_ONLY

此参数前面存在VAR_POSITIONAL类型的参数,只能通过关键字传值,如:

python3基础入门-知识点简记
def func_d(*args, age, sex):

            print(args, age, sex)

 

# 只能通过关键字传值

func_d('alex', age=24, sex='man')
View Code

 

 

5)POSITIONAL_ONLY

只能通过位置传值的参数。Python并没有明确的语法去定义一个只能通过位置传值的函数参数,但是在很多内置和扩展模块的函数会接受这种类型的参数。

 

(4)匿名函数

可使用 lambda 来创建匿名函数。

lambda 函数的语法:

lambda [arg1 [,arg2,.....argn]]:expression

示例:

python3基础入门-知识点简记
#lambda

sum = lambda arg1, arg2: arg1 + arg2;

 

# 调用sum函数

print ("相加后的值为 : ", sum( 10, 20 ))
View Code

 

 

(5)变量

      1)作用域

u  L (Local) 局部作用域

u  E (Enclosing) 闭包函数外的函数中

u  G (Global) 全局作用域

u  B (Built-in) 内建作用域

以L –> E –> G –>B 的规则查找。

     

 2)global 和 nonlocal关键字

当内部作用域想修改外部作用域的变量时,就可用到global和nonlocal关键字:

l  修改全局变量,global

l  修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量,使用 nonlocal 关键字

 

 

8、文件读写

常用的读写模式:

模式

r

r+

w

w+

a

a+

+

+

 

+

 

+

 

+

+

+

+

+

创建

 

 

+

+

+

+

覆盖

 

 

+

+

 

 

指针在开始

+

+

+

+

 

 

指针在结尾

 

 

 

 

+

+

 

9、面向对象

(1)类定义

python3基础入门-知识点简记
class ClassName:       

   <statement-1>         

         .        

         .      

  <statement-N>
View Code

 

 

(2)继承

python3基础入门-知识点简记
class DerivedClassName(Base1, Base2, Base3):       

    <statement-1>         

          .      

          .       

     <statement-N>     
View Code

 

  

 (3)类属性和方法

1)类的私有属性

__private_attrs:两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。

2)类的方法

在类地内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定是用 self。

3)类的私有方法

__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.__private_methods。

 

(4)类的专有方法

__init__ : 构造函数,在生成对象时调用

__del__ : 析构函数,释放对象时使用

__repr__ : 打印,转换

__setitem__ : 按照索引赋值

__getitem__: 按照索引获取值

__len__: 获得长度

__cmp__: 比较运算

__call__: 函数调用

__add__: 加运算

__sub__: 减运算

__mul__: 乘运算

__div__: 除运算

__mod__: 求余运算

__pow__: 乘方

可对运算符进行重载。

 

10、标准库

说明

操作系统接口

os模块提供了不少与操作系统相关联的函数。

文件通配符

glob模块提供了一个函数用于从目录通配符搜索中生成文件列表:

命令行参数

通用工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于 sys 模块的 argv 变量。

错误输出重定向和程序终止

sys 还有 stdin,stdout 和 stderr 属性,即使在 stdout 被重定向时,后者也可以用于显示警告和错误信息。

字符串正则匹配

re模块为高级字符串处理提供了正则表达式工具。

数学

math模块为浮点运算提供了对底层C函数库的访问;random提供了生成随机数的工具

网络

urllib.request、smtplib

日期和时间

datetime

数据压缩

zlib,gzip,bz2,zipfile,以及 tarfile

...

...

 

11、多线程

Python3 中thread 模块已被废弃。目前可以使用 threading 模块代替。但为了兼容性,Python3 将 thread 重命名为 "_thread"。

(1)创建线程的两种方式:

1)调用 _thread 模块中的start_new_thread()函数来产生新线程

_thread.start_new_thread ( function, args[, kwargs] ):

参数说明:

u  function - 线程函数。

u  args - 传递给线程函数的参数,他必须是个tuple类型。

u  kwargs - 可选参数。

2)threading 

从 threading.Thread 继承创建一个新的子类,并实例化后调用 start() 方法启动新线程,即它调用了线程的 run() 方法;

 

(2)线程同步

使用 Thread 对象的 Lock 和 Rlock 可以实现简单的线程同步,这两个对象都有 acquire 方法和 release 方法,对于那些需要每次只允许一个线程操作的数据,可以将其操作放到 acquire 和 release 方法之间。

 

 

主要参考: