学习笔记——Python:第一阶段

1. 语言特点

  • 面对对象
  • 解释性
  • 免费开源
  • 可移植性
  • 胶水语言:可以调用C语言
  • 丰富的库
  • 代码规范性
  • 支持函数式编程
  • 动态类型:不会检查数据类型,在变量声明无需指定数据类型

2. 应用场景

  • 桌面应用开发:wxPython、Tkinter…
  • Web应用开发:Django、Flask、Tornado…
  • 自动化运维
  • 数据可视化:Matplotlib
  • 网络爬虫
  • 人工智能
  • 大数据
  • 游戏开发

3. 语法基础

3.1. 标识符——命名规则:
  • 区分大小写
  • 首字符不能是数字,可以是下划线或字母
  • 关键字不能作为标识符
  • 不能使用Python内置函数作为自身标识符
  • $#不能构成标识符:room#$Name属于非法标识符
3.2. 关键字

Python语言中有33个关键字,只有三个首字母大写:FalseTrueNone,其他全部小写。

3.3. 变量和常量

Python是动态类型语言,不能定义真正意义的常量。

3.4. 语句
  • 一行代码表示一条语句,语句结束可以加分号,但没必要
  • 多个变量赋值可以用链式结构:a = b = c =10,但没必要
  • ifforwhile内代码块不通过大括号界定,而是通过缩进
    if (a > b):
    	print(a)
    
  • 考虑到不同编辑器Tab键缩进程度存在区别,编程规范建议采用4个空格代替Tab键
3.5. 模块
  • import <模块名>:使用模块元素时需加模块名为前缀
  • from <模块名> import <代码元素>
3.6. 包(package)命名空间
  • 通过目录的方式组织众多的模块,用来管理和分类模块
  • 包含__init__.py文件(可以为空文件),阐释该目录文件夹属性是包
  • 同名的模块可以放在不同的包下,以避免名称冲突

4. Python编码规范

4.1. 命名规范
  • 包名:全部小写字母,通过点连接分隔,不推荐使用下划线;包名应具有唯一性;推荐采用公司或组织域名的倒置,如com.apple.quicktime.v2
  • 模块名:全部小写字母,如果是多个单词构成,可以用下划线隔开,如dummy_threading
  • 类名:采用大驼峰法命名,如SplitViewController
  • 异常名:异常属于类,命名同类命名,但应该使用Error作为后缀,如FileNotError
  • 变量名:全部小写字母,如果是多个单词构成,可以用下划线隔开。如果变量应用于模块或函数内部,则变量名可以单下划线开头;如果变量类内部私有使用变量名可以双下划线开头。不要命名双下划线开头和结尾的变量,这是Python保留的。另外,避免使用小写L、大写O和大写I作为变量名
  • 函数名和方法名:同变量命名,如balance_account_push_cm_exit
  • 常量名:全部大写字母,多个单词构成通过下划线隔开,如YEARWEEK_OF_MONTH
4.2. 注释规范
  • 文件注释:在每个文件开头添加注释,采用多行注释。通常包括:版权信息、文件名、所在模块、作者信息、历史版本信息、文件内容和作用等。(给能编辑源代码的人看的)
    #
    # 版权所有 2015 ****有限公司
    # 许可信息查看LICENSE.txt文件
    # 描述:
    #  实现日期基本功能
    # 历史版本:
    #  2015-7-22:创建
    #  2015-8-20:添加socket库
    #  2015-8-22:添加math库
    #
    
  • 文档注释:文档字符串,注释内容能够生成API帮助文档,可以使用Python官方提供的pydoc工具从Python源代码文件中提取这些信息,也可以生成HTML文件。所有公有的模块、函数、类和方法都应该进行文档注释。(生成API帮助文档给人看)
    文档注释推荐使用一对三重双引号(""")包裹起来,注意不推荐使用三重单引号(''')。
  • 代码注释:注释太多 = 代码质量差
  • TODO注释:有些地方不能确定,或未完成。
    # TODO 有待解决
    
4.3. 导入规范
  • 导入语总是放在文件顶部,位于模块注释和文档注释之后,模块全局变量和常量之前
  • 每一个导入语句只能导入一个模块
    推荐使用:
    import re
    import struct
    import binascii
    
    不推荐使用:
    import re, struct, binascii
    
    但是from import后面可以多个代码元素
    from codeop import CommandCompiler, compile_command
    
  • 导入顺序:从通用到特殊,标准库→第三方库→自己模块,每一组之间有一个空行,且组中模块按照英文字典顺序进行排序
    # 标准库
    import io
    import os
    import pkgutil
    import sys
    import time
    
    from html import unescape	# 第三方库
    
    from com.pkg1 import example	# 自定义库
    
    Pycharm快捷键:Ctrl+Alt+O,可自动识别排版
4.4. 代码排版:包括空行、空格、断行和缩进等
  • Pycharm快捷键:Ctrl+Alt+L,可自动进行格式排版
  • 空行:
    import语句块前后保留两个空行;
    ②函数声明之前保留两个空行;
    ③类声明之前保留两个空行;
    ④方法声明之前保留一个空行;
    ⑤两个逻辑代码块之前应该保留一个空行。
  • 空格:
    ①赋值符号=前后各有一个空格;
    a = 10
    c = 10
    
    ②所有的二元运算符都应该使用空格与操作数分开;
    a += c + d
    
    ③一元运算符:算法运算符取反-和运算符取反~
    b = 10
    a = -b
    y = ~b
    
    ④括号内不要有空格,包括:()[]{}
    doque(cat[1],{dogs:2},[])	# 推荐用法
    doque(cat[ 1 ],{ dogs:2 },[ ])	# 不推荐
    
    ⑤不要在逗号、分号、冒号前面有空格,而是要在他们后面有一个空格,除非该符号已经是行尾。
    # 推荐
    if x == 88:
    	print x, y
    x, y = y, x
    # 不推荐
    if x == 88 :
    	print x , y
    x , y = y , x
    
    ⑥参数列表、索引或切片的左括号前不应有空格;
    # 推荐
    doque(1)
    dogs['key'] = list[index]
    # 不推荐
    doque (1)
    dogs ['key'] = list [index]
    
  • 缩进:4个空格常被作为缩进排版的一个级别。默认情况下一个制表符等于8个空格,且不同的IDE工具中一个制表符与空格对应的个数会有不同,所以尽量不要使用制表符缩进
  • 断行:一行代码最多79个字符。对于文档注释和多行注释时一行最多72个字符,超过需断行(若包含URL地址则不受限制)
    # 在逗号后面断开
    bar = long_function_name(name1, name2,
    			name3, name4)
    def long_function_name(var_one, var_two,
    			var_three, var_four):
    # 在运算符前面断开
    name1 = name2 * (name3 + name4
    			- name5) + 4 * name6
    # 尽量不要使用续行符(\),当有符号(包括:大括号、中括号和小括号)则在括号中断开,这样可以不使用续行符。
    def long_function_name(var_one, var_two,
    			var_three, var_four):
    	return var_one + var_two + var_three \ 
    		+ var_four
    	# 推荐加入括号换行
    	return (var_one + var_two + var_three
    		+ var_four)
    

5. 数据类型

在Python中所有的数据类型都是类,每一个变量都是类的“实例”。没有基本数据类型的概念,所以整数、浮点和字符串也都是类。
Python有6种标准数据类型:数字、字符串、列表、元祖、集合和字典

5.1. 数字类型

包括整数类型、浮点类型、复数类型和布尔类型

  • 整数类型:Python中整数类型为int,范围只受计算机硬件的限制。表示方式如下:
    ①二进制数:以0b或0B为前缀,注意0是阿拉伯数字
    ②八进制数:以0o或者0O为前缀,第一个字符是阿拉伯数字0,第二个字符是英文字母o或O
    ③十六进制数:以0x或0X为前缀,注意0是阿拉伯数字
  • 浮点类型:Python中浮点类型为float
  • 复数类型:Python中复数类型为complex,例如1+2j表示的是实部1、虚部2的复数
  • 布尔类型:Python中布尔类型为bool,只有两个值:TrueFalse
    任何类型数据都可以通过bool()函数转换为布尔值,“没有的”、“空的”值会转换为False,反之转换为True
5.2. 数字类型相互转换
  • 隐式类型转换:多个数字类型数据之间可以进行数学计算,由于参与进行计算的数字类型可能不同,此时会发生隐式类型转换。

    a = 1 + True
    
  • 显式类型转换:int()float()bool()函数

    int(19.4)
    float(5)
    bool(2)
    
5.3. 字符串类型
  • 字符串表示方式:
    ①普通字符串:采用单引号'或双引号"包裹起来的字符串
    ②原始字符串:在普通字符串前加r,字符串中的特殊字符不需要转义,按照字符串的本来“面目”呈现

    a = "Hello \n world"
    print(a)
    a = r"Hello \n world"
    print(a)
    

    ③长字符串:字符串中包含了换行缩进等排版字符,可以使用三重单引号'''或三重双引号"""包裹起来

    a = '''Hello
    	world'''
    print(a)
    
  • 字符串格式化:format()方法,字符串格式化控制符,以及占位符{}

    name = 'Mary'
    age = 18
    money = 1234.5678
    
    "{0}芳龄是{1:d}岁。".format(name, age)
    "{0}今天收入是{1:10.2f}元。".format(name, money)
    
  • 字符串查找
    str.find(sub[,start[,end]])
    str.rfind(sub[,start[,end]])

    source_str = "THere is a string accessing example."
    len(source_str)
    source_str.find('r')
    source_str.rfind('r')
    source_str[16]
    
  • 字符串与数字相互转换
    ①字符串转换为数字
    int()float()
    ②数字转换为字符串
    str()

6. 运算符

6.1. 算数运算符
  • 一元运算符:取反运算符-

  • 二元运算符:加减乘除、取余%、幂**以及地板除法//

    3 % 2
    10 ** 2
    3 // 2	# 比商小的最大整数,此处结果为1
    
6.2. 关系运算符

有6种:==!=><>=<=

6.3. 逻辑运算符

有3种:与and、或or、非not

6.4. 位运算符
  • 位反~~x:将x的值按位取反
  • 位与&x&y:x与y位进行位与运算
  • 位或|x|y:x与y位进行位或运算
  • 位异或^x^y:x与y位进行位异或运算
  • 有符号右移>>x>>a:x右移a位,高位采用符号位补位
  • 左移<<x<<a:x左移a位,低位用0补位
6.5. 赋值运算符

用于简写,主要包括:+=-=*=/=%=**=//=&=|=^=<<=>>=

6.6. 其他运算符
  • 同一性测试运算符:isis not
    注意:==is区别
    ==:测试两个对象内容是否相等
    is:测试两个对象是否是同一个对象
  • 成员测试运算符:innot in
6.7. 运算符优先级

7. 控制语句

7.1. 分支语句

if结构:

  • if结构:

    if 条件:
    	语句组
    
  • if-else结构:

    if 条件:
    	语句组1
    else:
    	语句组2
    
  • elif结构,类似switch语句:

    if 条件1:
    	语句组1
    elif 条件2:
    	语句组2
    elif 条件3:
    	语句组3
    ...
    elif 条件n:
    	语句组n
    else:
    	语句组n+1
    
  • 三元运算符替代品——条件表达式

    表达式1 if 条件 else 表达式2
    
7.2. 循环语句

whilefor

  • while语句
    while 循环条件:
    	语句组
    [else:
    	语句组]
    
  • for语句
    for 迭代变量 in 序列:
    	语句组
    [else:
    	语句组]
    
    for num in range(1, 10):
    	print('{0} * {0} = {1}'.format(num, num * num))
    
7.3. 跳转语句

breakcontinuereturn

  • break语句:遇到break跳出循环体

    for item in range(10):
    	if item == 3:
    		break
    	
    	print('Count is: {0}'.format(item))
    # 打印 0、1、2
    
  • continue语句:遇到continue语句结束当次循环,continue之后的语句不再执行,接着执行下次循环

    for item in range(10):
    	if item == 3:
    		continue
    	
    	print('Count is: {0}'.format(item))
    # 打印 0-9,除了3
    
  • whilefor中的else语句:whilefor正常循环结束时走的else语句

    while i * i < 10:
    	i += 1
    	print('{0} * {0} = {1}'.format(i, i * i))
    else:
    	print('While Over!')
    
7.4. 使用范围

范围在Python中类型是range,表示一个整数序列,创建范围对象使用range()函数,range()函数语法如下:
range([start,]stop[,step])

注意:start≤整数序列取值<stop,步长step可以为负数,可以创建递减序列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值