Skip to content

Latest commit

 

History

History
90 lines (74 loc) · 4.41 KB

basic_grammar.md

File metadata and controls

90 lines (74 loc) · 4.41 KB

基础语法

python思想中一切皆对象,但是由于python是一门应用非常广泛的语言,所以在某些方面,你可以把python称为面向对象的语言,但它也可以是一门面向过程的语言: 程序 = 数据结构 + 算法

  • 面向过程:以指令为中心,由指令处理数据,如何组织代码解决问题,如:shell运维
  • 面向对象:以数据为中心,所有的处理代码都围绕数据展开,如何设计数据结构组织数据, 并提供对此类数据所允许处理操作,如:web开发

数据结构:

  • 1.Python最基本的是数据结构是序列, 序列为索引为非负整数的有序对象的集合
  • 2.Python中内建的6种数据序列:列表,元组,字符串,Unicode字符串,buffer对象和xrange对象
  • 3.None表示Python的空值,对于Python而言,不管 "",None,[],{},set(),() 在if判断语句中都为False

基本数据类型

  • Integral 类型:

    • 整形:不可变类型
    • 布尔类型:True,False
  • 浮点类型:

    • 浮点数:3.1415
    • 复数 :3+6j
    • 十进制数字:
  • 字符串:"abc”

Python中组合数据类型:

注:该类型其实都是对对象的引用

  • 元组:tuple(),不可变对象
  • 列表:list[],可变对象
  • 字典:dict{},可变对象
  • 集合:set([]),可变对象

容器,类型,对象相关概念:

list,tuple,dict都是容器

  • 1.list,tuple,dict 可以跨行定义,最后一个元素后可以使用逗号,但元素为空时,不允许使用逗号
  • 2.所有对象都有引用计数,当引用计数为0时,垃圾回收器会回收此对象
  • 3.获取对象引用计数import sys ; sys.getrefcount(object)
  • 4.删除对象引用,del(object),减少对象引用计数
  • 5.列表和字典都支持两种赋值操作:浅复制和深复制
    • 浅复制:如list_1=list 创建一个新对象,但是还是对之前对象的引用,新对象会影响之前对象
    • 深复制:创建一个新对象,然后递归的复制一份,放置到新对象中,新对象不会影响之前对象 深复制可以使用copy模块的deepcopy()实现
  • 6.Python中的对象都是"第一类",即使用标识符命名的所有对象都有相同的状态,于是能够命名所有对象, 都可以直接当数据进行处理,比如:a = 1,b = 2,result = b/a表示数值对象直接可以当作数据处理
  • 7.所有序列(概念:序列为索引为非负整数的有序对象的集合)都支持迭代(字符串也是一个序列)
  • 8.所有序列都支持的操作和方法:
    • 索引 : val[i]
    • 切片 : val[i:j]
    • 扩展切片 : val[i:j:stride]
    • 长度 : len(val)
    • 最小值 : min(val)
    • 最大值 : max(val)
    • 数值序列求和 : sum(val)
    • 都为True : all(val)
    • 任意为True : any(val)
    • 连接 : val+val2
    • 重复 : val * N
    • 存在 : item in container
    • 不存在 : item not in container

对象引用(变量):

  • Python中所有的数据存为内存对象:

    • Python中,"变量"实际是"指向内存对象的引用"
  • 动态类型:

    • 在任何时刻,只要需要,某个对象引用都可以重新引用一个不同的对象,可以是不同的数据类型
    • 内置函数type()用于返回给定对象的数据类型
    • 内置函数id()查看变量引用对象在内存中的地址
    • "=”用于将变量名与内存中的对象绑定,如果对象存在,就直接指向该对象,如果不存在,用"=”创建引用的对象

例如name="tom",这个操作Python会在内存中声明一个name变量,开辟一块内存空间存储tom对象,然后name指向 tom这个字符串对象,当tom这个字符串的引用计数为0时,Python会在合适的机会进行垃圾回收

命名规范:

  • 只能包含字母,数字,下划线,不能以数字开头

  • 区分字母大小写

  • 禁止使用关键字

  • 以单一下划线开头的命名的变量(_name)不会被from module import * 语句导入

  • 前后有两个下划线命名的变量(__str__)是系统定义的变量名,对Python解释器有特殊含义

  • 以两个下划线开头但结尾没有的变量(__numbers)是类的本地变量

  • 在交互模式下,"_" 用于保存最后表达式的结果

注意:变量名没有类型,对象才有

帮助文档:

  • 查看对象方法:dir(obj)
  • 查看对象函数使用:help(obj.method)