python语言基础

1、语法特点

1.1 注释规则

(1)单行注释

语法:
# [注释内容]

(2)多行注释

语法:
在 python 中将包含在一对三引号('''...''')或者("""...""")之间,并且不属于任何语句的内容认为是多行注释

应用:通常为文件、模块、类添加版权声明和功能信息
'''
Author: zhangyy
DATE: 2020-01-03
'''

(3)中文编码声明注释

语法:
# -*- coding:编码 -*-
# coding=编码

编码:utf-8、gbk、cp936

应用:
# -*- coding:utf-8 -*-
# coding=utf-8

1.2 代码缩进

  行尾的冒号 ":" 和下一行的缩进,表示一个代码段的开始;而缩进的结束表示一个代码段的结束;
  同一个级别的代码块的缩进量必须相同,如果不采用合理的代码缩进,将抛出 SyntaxError 异常。

1.3 编码规范:PEP8

(1)每个 import 语句只导入一个模块,尽量避免一次导入多个模块;

(2)不要在行尾添加分号 ";",也不要用分号将两条命令放在同一行;

(3)建议每行不超过80个字符;

  针对字符串超过80个字符:可以在要换行的地方添加反斜杠 "\",回车换行,但是推荐使用小括号 (),来吧多行的内容隐式的连接起来格式。

s = "xxxxxxxxxxxxxxxxx" \
"xxxxxxxxxxxxxx"
print(s)
执行结果
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

s = ("xxxxxxxxxxxxxxxxx" "xxxxxxxxxxxxxx") print(s)
执行结果:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  针对语句超过80个字符:

num = 22
if num >= 20 and num <30:
    print("20<",num,"<30")
执行结果:
20< 22 <30

语句换行:
num = 22
if num >= 20 and (
num <30): #使用小括号换行语句,小括在操作符之后
print("20<",num,"<30")
执行结果:
20< 22 <30

  导入模块的语句过长和注释里面的 url 过长不能换行

(4)使用必要的空行增加代码的可读性

  顶级定义之间空两行(函数的定义、类的定义)
  方法的定义之间空一行

(5)运算符两侧、函数参数之间、逗号 "," 两侧建议使用空格进行分隔

(6)避免在循环中使用 + 和 += 运算符累加字符串

(7)适当使用异常处理结构提高程序容错性

1.4 命名规范

  模块名尽量短小,并且使用全部小写字母,可以使用下划线分隔多个字母;

game_main(例:游戏模块)

  包名尽量短小,并且使用全部小写字母,可以使用点 "." 分隔多个字母;

com.mingrisoft(例)

  类名采用单词首字母大写形式(即帕斯卡 Pascal 风格);

BorrowBook(例:借书类)

  模块内部的类由 "_"+Pascal 风格的类名组成;

_BorrowBook(表示为BorrowBook类中的内部类)

  函数、类的属性和方法名全部采用小写字母,多个字母间用"_"分隔;

  常量命名时采用全部大写字母,可以使用下划线;

  使用单下划线"_"开头的模块变量或函数是受保护的;

  使用双下划线"__"开头的实例变量或方法是类私有的。

2、保留字与标识符

2.1 保留字

import keyword
print(keyword.kwlist)    #查看保留字

  注意:python 中保留字区分大小写;在 python 开发程序时,如果使用 python 中的保留字作为模块、类、函数或者变量名时,将产生无效语法。

2.2 标识符

  以字母、下划线"_"和数字命名,数字不能为第一位

  以下划线开头的标识符,表示不能世界访问的类属性,也不能被import被导入(保护变量)

  以双下划线开头的标识符,表示类的私有成员

  以双下划线开头和结尾的标识符,表示专用标识

3、变量

  变量 (名字、标签) — 把值存储在变量中

 

3.1 使用变量

  不用先声明变量名和类型,可以直接赋值,使用内置函数 type() 可以返回变量类型

python = "学会python还可以飞"
age = 22
print(python)
print
(age)
print("python type:",type(python),"age type:",type(age))

执行结果:
学会python还可以飞
22

python type: <class 'str'> age type: <class 'int'>

  python 是动态类型的语言,允许多个变量指向同一个值,使用内置函数id()返回变量所指的内存地址

num = age = 20
print(num)
print(age)
print(id(num))
print(id(age))

执行结果:
20 20 140721814795120 140721814795120

3.2 变量的命名规则

  必须是一个有效的标识符

  选择有意义的单词

  不能选择 python 中的保留字

  慎用小写字母l和大写字母O

3.3 python 中无法定义常量,赋值即定义

4、基本数据类型

4.1 数字类型

(1)整数:十进制、八进制、二进制、十六进制

  二进制:0b1000110

  八进制:0o6514

  十六进制:0x5E6

 
(2)浮点数:整数部分.小数部分
  浮点数进行计算,可能会出现小数位数不确定的情况(可以使用 round 四舍五入函数去掉多余位数)

print(0.1+0.2)
执行结果:
0.30000000000000004

print(round(0.1+0.2,1))            
执行结果:
0.3

(3)复数

 4.2 字符串类型

  字符串属于不可变序列:通常使用单引号 ' '、双引号 " " 和三引号 ''' ''' 括起来,对于单引号和双引号里面的字符序列必须在一行;三引号里面的字符序列可以在多行。

 

   在字符串前加小写字母r,不转义\

a = 'pytho\'n'
b = r'pytho\'n'
print(a)
print(b)

执行结果: pytho
'n pytho\'n

4.3 布尔类型:主要用来表示真或假的值

  布尔值:

True(1):真
False(0):假

  除了 False、None、0、0.0、虚数 0、空序列(空字符串、空元组、空列表、空字典)或对象方法返回的 False 和 0 表示为假,其他皆为真。

4.4 数据类型转换

  python 是动态类型的语言(弱类型的语言)即使用变量之前不需要声明变量的类型

  常用的数据类型转换函数:

 

实例:商品结账抹零
money_all = 56.75 + 34.22 + 54.88 + 77    #累加总计金额
money_all_str = str(money_all)    #浮点类型转换为整数类型
print("商品总金额为:"+money_all_str)
money_real = int(money_all)    #转换为整形(进行抹零处理)
money_real_str = str(money_real)
print("实收金额为:"+money_real_str)

执行结果:
商品总金额为:222.85
实收金额为:222

5、基本输入和输出

5.1 使用内置函数 input() 接收用户的输入

基本语法:
password = input("请输入密码")

  input() 函数返回值为字符串类型,如有需要进行数据类型转换

基本语法:
password = int(input("请输入密码"))

 

实例:
grade = input("请输入你的成绩:")
print("你的成绩为:",grade)

执行结果:
请输入你的成绩:11
你的成绩为:11

5.2 使用 print() 函数输出

基本语法:
print(输出内容)

  输出内容可以是数字、字符串(使用字符串定界符括起来)、运算式

  在 python 中默认一条 print() 语句输出后自动换行,使用逗号 "," 相隔多个输出内容(默认以空格分隔),使至不换行

  也可以输出到文件:

fp = open(r'F:\mot.txt','a+')
print("python",file = fp)    #输出到文件
fp.close()    #关闭文件

6、内存管理

  python 编程中一般无须关心变量的存亡,一般也不用关心内存的管理

  python 使用引用计数记录所有对象的引用数

    当对象引用数变为0,它就可以被垃圾回收GC

  计数增加:

         赋值给其他变量就增加引用计数,例如x=3; y=x; z=x

       实参传参,如foo(y)

  计数减少:

         函数运行结束时,局部变量就会自动销毁,对象引用计数减少

         变量被赋值给其他对象,例如x=3; y=x; x=4

  有关性能的时候,就需要考虑变量的引用问题,但是该释放内存还是尽量不释放内存,看需求

# -*- coding:utf-8 -*-
# version:python3.7

import sys
#引用计数增长
a = []    #赋值空列表给a,引用计数为1
b = a     #引用计数为2
c = a     #引用计数为3
d = c     #引用计数为4
print(sys.getrefcount(a))    #获取引用计数(4再加1)

#引用计数减少
a = 1     #减少1(释放)
b = 2     #再减1(释放)
print(sys.getrefcount(c))    #获取引用计数

执行结果:
5
3

 7、数字处理函数

(1)round():四舍六入,五取偶

print(round(3.1),round(3.49),round(4.5),round(3.5),round(3.7))

执行结果:
3 3 4 4 4

(2)math模块:floor()地板、ceil()天花板

# 地板:
import math    #获取math模块
print(math.floor(2.1),math.floor(-2.3))    #floor地板:向下取整

执行结果:
2 -3

# 天花板:
import math    #获取math模块
print(math.ceil(2.1),math.ceil(-2.3))    #ceil天花板:向上取整

执行结果:
3 -2

(3)//:整除且向下取整

(4)int():截取整数部分

(5)min()、max()

(6)pow(x,y)等于x**y

(7)math.sqrt():开方

(8)进制函数,返回值是字符串

bin(10),oct(10),hex(10)    #返回字符串

8、类型判断

  type(obj):返回类型,而不是字符串

print(type('abc'))
print(type(123))
print(type(1 + True))
print(type(1 + True + 2.4))    #隐式类型转换

执行结果:
<class 'str'>
<class 'int'>
<class 'int'>
<class 'float'>

 

print(isinstance('abc',(bool,int)))        #判断'abc'是bool值吗?是int吗?
print(isinstance('abc',(bool,int,str)))    #判断'abc'是bool值吗?是int吗?是str吗?返回类型

执行结果:
False
True

 

posted @ 2020-03-05 16:59  我听过  阅读(393)  评论(0编辑  收藏  举报