python 开发基础

  

 Python简介

  优点:面向对象、免费、可移植、可混合编程、简单易学、应用广泛、开发效率高、开源

  缺点:与C C++相比执行速度不够快、不能封闭源代码

 

#! /usr/bin/python3

print("Hello World")

python 交互提示模式  :  >>>  ...

python 注释 : #开头,直到结尾

 quit()  、exit()  、 ctrl+d    :退出交互模式

 

数据类型

python 的核心数据类型:数字(整数,浮点数,复数,布尔型)、字符串、列表等

 

表达式和运算符

/ 除法,得到的是浮点数,保留小数部分

//  地板除,除的结果去掉小数部分向下取整

**  幂运算,x**y 意为x的y次方

变量

以字母或下划线开头

不能用特殊关键字

python 中变量没有类型

赋值语句:

1、变量名 = 表达式           a=1000

2、变量名1 = 变量名2 = 变量名3 = 表达式        a=b=c=1000

3、变量名1 , 变量名2 , 变量名3 = 表达式1,表达式2,表达式3        a,b,c=1,2,3

help("__main__")   :交互模式下 查看当前作用域下有哪些变量

 

del语句

作用:用于删除变量与解除与对象的对应关系,如果可能则释放对象

del 变量名1,变量名2...

 

is 和 is not 运算符

作用:判断两个对象是否是同一个对象,当是同一对象返回true,否则返回false

 

id()  函数

作用:返回一个对象在内存中的地址    id(变量)

 

运算符

1、复合赋值运算符

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

2、比较运算符

<    >       <=   >=          ==    !=   

函数介绍

float() 浮点数       int() 整数      bool(x) 用x创建一个布尔值

complex(r=0.0,i=0.0) 用数字创建一个复数

abs(x) 取x的绝对值

round() 对数值进行四舍五入

pow() 两个参数时相应当x**y,三个参数相当于x**y%z

 

语句及换行

1、多条语句写在一行需要用;分开

2、折行符 \ (反斜杠),折行符放在一行的末尾

3、所有括号的内容换行,称为隐式换行         :所有括号都得成对,所有第一行有一半括号后会折行继续执行

 

基本输入输出

print(1,2,3,sep='/',end='\n')

小整数对象池:

CPython 中整数 -5 至 256,永远存在于小整数对象池中,不会被释放并可重复使用.

while语句

i=0

while i < 10:

  print(i)

  i+=1

else:

  print('end')

for语句

for v in data:

  print(':',v)

else:

  print('end')

 列表

l = [1,2,3,4]

l = ['11','22','33',44,5.5,true]

list()    :生成一个空的列表,等同于 [ ]

id( 变量 )   :查看变量在内存中的位置

列表切片

列表 [ : ]

列表 [ : : ]

 序列函数和方法

 #字符串的内容列表 与 字符串 之间的相互转换

L=['1','2']

str = '#'.join(L)      #列表转字符串

L = str.split('#')      #字符串转列表

del删除元素

 L = [0,2,6,4]

del L[0]

del L[::2]

 

深拷贝与浅拷贝

 深拷贝:将原始 完全拷贝一份新的

浅拷贝:只复制第一层变量

 深拷贝浅拷贝取决有更改的是对象内容还是更改的整个操作对象  L2 = L1[::]  [::] 是完全浅拷贝

列表推导式

【表达式 for 变量 in 可迭代对象】

【表达式 for 变量 in 可迭代对象 if 真值表达式】

 嵌套:

 

元组

1、元组是不可改变的序列容器

2、t = ()       #创建空元组

  t = (20,)

  t = (1,2,3) 

  t=200,

  t=100,200,300

  t=(none,false,100,3.14,"abc",[1,2,3])     #元组内可以存任何对象

  t = tuple()

  t = tuple('abc')

  t = tuple([x**2 for x in range(10)])

3、type(x)   返回x的类型

字典

1、字典是一种可变的容器,可以存储任意类型的数据

2、字典中的数据以 键值对形式进行映射存储,字典的存储是无序的,键不能重复

3、d = {}      #d 绑定空字典

  d = {'name':'tarena','age':18}

  d = dict{}

  d = dict{ [ (1,2),[3,4],"ab" ] }   #字典中每个元素都必须是含有两个元素的序列

  d = dict(name='abc',age=18)

成员运算及迭代访问

 in  /   not in  运算符 (成员资格运算  ):判断一个键是否存在于字典中

字典的函数和方法

 

 

字典推导式

 

 集合

1、集合中的数据对象都是唯一的;无序的存储结构,没有先后顺序

2、集合内的元素必须是不可变的对象,集合是可迭代的对象

3、集合是相当于只有键值的字典

set()   #创建空集合

set = {1,2,3}

4、所有可变对象不能作为字典的键 也不能作为集合的值

5、交集 &   并集 |    补集 -       对称补集  ^    子集 <      超集  >

  子集或相同 <=        超集或相同 >=

  in          not in

6、frozenset()    #创建一个固定集合

函数

 def  函数名(形参列表):

   语句块(代码块)(必须有,如果没有用 pass 代替)

 位置、序列、关键字传参

def myfun(a,b,c):

  pass

1、位置:  myfun(1,2,3) 

2、序列:

  L = [1,2,3]

  myfun(*L)   #将序列中元素拆开依次传给各个位置

3、关键字:

  myfun(a=1,c=3,b=2)

字典关键字传参及函数综合传参

1、字典关键字:

 d = {'c':3,'b':2,'a':1}

myfun(**d)              #将字典中元素拆开,然后再依据关键字传参

2、函数综合:

位置传参和关键字传参的混合用法,位置传参一定要在关键字传参前面

 

缺省参数  函数的位置形参  星号元组形参 命名关键字形参  双星号字典形参  函数形参顺序  

 1、缺省    #必须从右至左一次存在

  def info(name,age=1,adderss='北京')

    pass

2、函数位置形参

    def myfun(a,b,c):

3、星号元组形参

    def myfun(*args):     #用来收集多余的位置传参,不接受关键字传参 eg print(1,2,3,4,5,6,7,8,9....)

4、命名关键字形参

    

    * 号左边可以位置传参,右边必须接受 关键字传的参

5、双星号字典形参

    

    

6、函数形参顺序

 

 

全局变量和局部变量

 

 

 

作用域

 

global语句 nonlocal语句 lambda表达式

 1、global 生名一个或多个全局变量;必须先声明后使用;声明的变量不能出现在函数形参中;

2、nonlocal 指的是外部嵌套作用域 ,声明的不是局部变量也不是全局变量,嵌套函数时候,内部函数调用外部函数(只限父级)的时候使用;同样声明的变量不能出现在此函数的形参中。

3、lambda   创建一个匿名函数对象,同 def 类似,但不提供函数名

  lambda [函数形参列表]:表达式

  怎么调用呢?  

  myadd = lambda x,y:x+y 

  myadd(20,30)     #50

  lambda 创建函数只能跟一个表达式,比函数简单,可以随时创建销毁,有利于减少程序的耦合度

eval和exec函数 

1、eval  

  

 

2、exec  

 

 函数式编程

函数的可重入性:一个函数没有访问除局部变量以外的变量

高阶函数

 

一、

  将一个函数 和 一个迭代对象 相关联 计算结果并返回迭代对象结果

  

 

二、

 

 

 三、

 

 

递归

 recursion

 

递归相当于函数嵌套,每一层都有自己的作用域

 

闭包

 

装饰器    decorators(专业提高篇)

 主要作用是用来包装另一个函数或类

在不修改被装饰函数的源代码和不改变被装饰的调用方式的基础上为函数添加新的功能或改变原有功能

 

文档字符串

 

文档字符串绑定在函数的 __doc__属性中

 

模块

模块 是一个包含有一系列数据,函数,类等组成的程序组;是一个文件,模块文件名通常以 .py 结尾

import 模块名

dir(obj) 函数,返回obj对象所有属性的字符串列表 ;如果没有参数,则返回当前作用域内所有变量列表

help(obj) 函数,可以查看模块的文档字符串

 

from import 语句

 from import * 语句

 

内建模块使用 

   math

  time

  sys

 自定义模块

 模块被导入过程

 

 

模块的属性

 

 

 

模块其它内容

 

 

 

 

 

 

 

 

 

 

try-except语法

  

  

   help(__builtins__) : 查看所有异常的类型

 

try-finally语句

   

  作用:触发异常时做必须要处理的事情,无论异常是否发生,finally子句都会被执行

  

 

 

raise语句

   

  raise 无参数调用时,只能放在 try-except 的 except 子句里,用来触发刚收到且用来处理的错误信息

assert语句 (断言语句)

 

 

 

 

 

迭代器   Iterator

 

 

生成器函数、表达式

  

  

  

   

 

  

  

  

 

迭代工具

   

  示例:

  

   

 

字节串

 

 

 

字节串是不可变得,字节串只能跟字节串相加,不能跟字符串相加

 

 

 

 

 

 

文件

  

  注意:任何操作系统,一个应用程序,同时打开文件的数量有最大数量显示

   

  

      F.write()    #写入文件

      F.writelines(列表)    #写入文件

 

    

 

标准输入输出文件

   sys.stdin   标准输入文件(默认是键盘)

  sys.stdout  标准输出文件(默认是屏幕终端)

  sys.stderr  标准错误输出文件(默认是屏幕终端)

  模块名:sys

  注:标准文件不需要打开和关闭就可以直接使用

 

二进制文件操作

   二进制文件操作的模式字符: ‘b’        说明:默认文件中存储的都是以字节为单位的数据,通常有人为的格式

  对二进制文件的读写操作用字节串(bytes)或 字节数组(bytearray)进行操作

  

  读文件:

    F.read()    F.readline()     F.readlines()

  写文件

    F.write(字节串)   F.writelines(字节串列表)

文件的其他操作

   F.tell()  返回文件流的读写指针的绝对位置

   F.seek(偏移量,whence=相对位置)  改变数据流读写指针的位置,返回新的绝对值

  F.flush()  用来清空缓冲区  

汉字编码

   国标系列:

    GB18030 (二字节或四字节编码,共27533个字)

    GBK(二字节编码,共21003个字)

    GB2312(二字节编码,共7000多字)

    注:Windows 下常用

  国际标准:

    UNICODE32 (四字节编码)

    UNICODE16(二字节编码)0-65535

    注:Linux IOS Android  常用

 

  python 编码字符串

    gb2312  gbk  utf-8 ascii ...

 

   # _*_ coding:gbk _*_      :声明当前编码  (windows 下默认的编码 与 linux 下默认的编码不一样,声明当前的编码拷贝到其它系统上才能正常执行)

 


 

 

面向对象

  万物皆对象

 对象有很多属性 、对象有很多行为

类及构造函数

 

 

  

 

 

实例方法

  类                     对象(实例)

class                  object (instance)

 

 

 

 

练习及删除属性

  实例变量(属性)

   del 对象.实例变量名

初始化方法

   

 

析构方法

   

 

预设实例属性

 

  用于类得函数:

    

类变量

   

 

类的文档字符串

   

  

 

类方法

   

  

  

   

 

继承和派生

 

单继承:

  class 类名(父类):          #单继承是指派生类由一个基类衍生而来

    pass

 

 help(builtins) #查看类的继承关系

 

覆盖 

 

 

 

 

封装

  

多态

 

 

多继承

 

 

 

函数重写

 

 

内建函数重写

 

 

数值转换函数重写

 

 

重定意义及属性管理函数

 

迭代器

 

 with语句

 

 

算术运算符重载

 

 

反向算术运算符重载

 

 

符合赋值算术运算符重载

 

 

其他运算符重载

 

 

 

索引和切片运算符重载

 

 

 

 

特性属性

 

 

 

PEP8规范

... ...

 

posted @ 2019-05-22 22:54  微客鸟窝  阅读(291)  评论(0编辑  收藏  举报
/* 看板娘 */