我是用的Python3.7.4版本,基于Spyder学习的。
- 变量名由字母、数字、下划线组成
- 第一个字符只能是字母或下划线,不能是数字
- 区分大小写
- 在Python3中可以用中文
例1:
_hhjj998=500
print( _hhjj998 )
#输出:
#500
例2:
2x=500
print( x )
#输出:
#SyntaxError: invalid syntax(语法错误:无效的语法)
例3:
学习笔记=500
print( 学习笔记 )
#输出:
#500
也叫保留字,注意:我们在定义标识符时,不能用关键字。
可以查看keyword 模块,显示当前Python中的所有关键字。
import keyword
print (keyword.kwlist)
#输出:
#['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
注释起说明文档的作用,还可以进行代码的调试,将暂时用不到的代码注释掉。
- 单行注释:以#开头
- 多行注释:(1)每行都以 # 开头;(2) ‘’’ ;(3) “”" 注意:是英文输入法下的’’'和""",并且成对出现
- 编码注释:放在第一行 # -- coding: utf-8 --
- 平台注释:如果需要使Python程序运行在Windows平台上,需在Python文件的上方加上 #!/usr/bin/python 。
例1:
#单行注释
print('hello')
例2:
#多行注释
#第一种方法
print('hello')
例3:
'''
多行注释
第二种方法
'''
print('hello')
例4:
"""
多行注释
第三种方法
"""
print('hello')
用缩进表示代码块,不需要{},同一个代码块必须要缩进相同空格数。
注:同一个级别的要保持缩进数一样,如例1中if和else的两个print虽然没有缩进相同的数目,但运行无误,但当else和if的缩进数不一致时,会出错(例2),当if中的两个print缩进数不一致时,也会出错(例3)。
例1:
first=15
second=20
if first>second:
print('第一个数较大')
print('缩进')
else :
print('第二个数较大')
print('缩进')
#输出:
#第二个数较大
#缩进
例2:
first=15
second=20
if first>second:
print('第一个数较大')
print('缩进')
else :#没有与if缩进一致
print('第二个数较大')
print('缩进')
#输出:
#IndentationError: unindent does not match any outer indentation level
例3:
first=15
second=20
if first>second:
print('第一个数较大')
print('缩进')#(都属于if)没有与前一个print缩进一致
else :
print('第二个数较大')
print('缩进')
#输出:
#IndentationError: unindent does not match any outer indentation level
空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
例:
a=15
b=20
print(a+b)
c=10
d=20
print(c*d)
#输出:
#35
#200
通常情况下,一行写一条语句,但是如果一条语句过长,则需要换行写,用反斜杠 \ 。如果有 [], {}, 或 () ,不需要反斜杠 \,也可以加(例3)。
例1:
a=15
b=20
c=10
y1=a+b+c-a*b-a*c-b*c+a*b*c#一行表示
y2=a+b+c \
-a*b-a*c-b*c+ \
a*b*c#多行表示
y3=[a+b+c,
-a*b-a*c-b*c,a*b*c ]#带有[]的多行表示
print(y1,y2,sum(y3))
#输出:
#2395 2395 2395
例2:
a=15
b=20
c=10
y2=a+b+c
-a*b-a*c-b*c+
a*b*c#多行表示
print(y2)
#输出:
#IndentationError: unexpected indent(没有加\)
例3:
a=15
b=20
c=10
y3=[a+b+c,\
-a*b-a*c-b*c,a*b*c ]#带有[]的多行表示
print(sum(y3))
#输出:
#2395
当在同一行中使用多条语句时,语句之间使用分号 ; (英文状态下)隔开。
例:
a=15;b=20;print(a+b)
#输出:
#35
缩进相同的语句构成了一个代码组(也叫代码块)。
例如:if、while、def和class等,第一行要以这些关键字起头,以:(英文冒号)结束,该行之后的一行或多行代码构成代码组。将首行及后面的代码组称为一个子句(clause)。
例:
a=15;b=20;
if a>b :
a=a*3
b=b-2
print(a+b)
else :
a=a/3
b=b+2
print(a+b)
#输出:
#27.0
包括: 整数、布尔型、浮点数和复数。
整数:int ,如1,21,333
布尔型:bool ,如true,false
浮点型:float , 如 1.34、2E-3
复数:complex , 如 12 + 2j、 1.4 - 2.6j
在Python中,字符串用单引号或双引号括起来,两者作用相同,用三引号(’’'或""")可以指定一个多行的字符串。
转义符 ‘’,使用r可以让反斜杠不发生转义。 如 r"this is my notes \n" 则\n会显示,并不是换行。(注意r后没有空格)
- 将字符串连接在一起,* 将运算符重复
Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
字符串的截取格式:变量[头下标:尾下标:步长]
例1:
A1='My python !'#单引号表示
A2="My python !"#双引号表示
A3='''My
python !'''#单三引号表示多行
A4="""My
python !"""#双三引号表示多行
A5='My \n python !'#\转义符(\n表示换行)
A6= r'My \n python !'#前面加上r不转义
A7='My'+' python'+'!'#将字符串连接在一起
A8='My'+' python'+('!'*4)#!重复出现4次
print(A1)
print(A2)
print(A3)
print(A4)
print(A5)
print(A6)
print(A7)
print(A8)
#输出:
#My python !
#My python !
#My
# python !
#My
# python !
#My
# python !
#My \n python !
#My python!
#My python!!!!
例2:
A1='python'
print(A1)#输出字符串
print(A1[0:-1])#输出第一个到倒数第二个的字符
print(A1[0])#输出第一个字符
print(A1[1:4])#输出从第二个到第四个字符
print(A1[2:])#输出从第三个开始之后的字符
#输出:
#python
#pytho
#p
#yth
#thon
input() 返回的是一个字符串
如果需要获得整数,需要用int() ,同理,浮点数用float()
例1:
a=int(input("请输入a:"))
b=int(input("请输入b:"))
print(a+b)
#输出:
#请输入a:5
#请输入b:10
#15
例2:
num=input("请输入一个小数:")
print("您输入的小数为:",float(num))
#输出:
#请输入一个小数:0.12
#您输入的小数为: 0.12
print遇到逗号,会输出一个空格
注意:默认的输出是换行的,如果不换行输出,需要加上 end=""
例1:
print('This','is','my','notes')
print('15+ 20 =', 12 + 20)
#输出:
#This is my notes
#15+ 20 = 32
例2:
a=15;b=20;
print("默认的输出(换行)");print(a);print(b);print('**')
print("不换行的输出");print(a,end=" ");print(b,end="hello")
#输出:
#默认的输出(换行)
#15
#20
#**
#不换行的输出
#15 20hello
import 和 from…import 用来导入相应模块(模块就是一个.py文件)。类似于C语言中的include头文件。
导入整个模块: import 某个模块
导入某个模块中的某个函数:from 某个模块 import 某个函数
导入某个模块中的多个函数:from 某个模块 import函数1, 函数2
导入某个模块中的全部函数:from 某个模块 import *
注:
from A import b,相当于import A;b = A.b,此过程中有一个隐含的赋值的过程。
import A as B 给予A库一个B的别称,目的是为了好记,可以按照自己的意愿给模块起别名。
例1:导入整个模块(使用 import 模块 时,如果使用模块内的成员,必须用 模块. 作为前缀)
# 导入sys整个模块
import sys
# 使用sys模块名作为前缀来访问模块中的成员
print(sys.argv[0])#sys模块下的argv变量用于获取运行Python程序的命令行参数,其中argv[0]用于获取当前Python程序的存储路径。
#输出:
#C:\Users\mengma\Desktop\hello.py
例2:导入整个模块时,为该模块起别名
# 导入sys整个模块,并指定别名为s
import sys as s
# 使用s模块别名作为前缀来访问模块中的成员
print(s.argv[0])
#输出:
#C:\Users\mengma\Desktop\hello.py
例3:导入多个模块,用逗号隔开
# 导入sys、os两个模块
import sys,os
# 使用模块名作为前缀来访问模块中的成员
print(sys.argv[0])
# os模块的sep变量代表平台上的路径分隔符
print(os.sep)
#输出:
#C:\Users\mengma\Desktop\hello.py
#\
例4:导入多个模块时,起别名
# 导入sys、os两个模块,并为sys指定别名s,为os指定别名o
import sys as s,os as o
# 使用模块别名作为前缀来访问模块中的成员
print(s.argv[0])
print(o.sep)
#输出:
#C:\Users\mengma\Desktop\hello.py
#\
例5:使用from import 导入指定的成员(此时不需要再加前缀,可以直接调用成员)
# 导入sys模块的argv成员
from sys import argv
# 使用导入成员的语法,直接使用成员名访问
print(argv[0])
#输出:
#C:\Users\mengma\Desktop\hello.py
例6:使用from import 导入指定的成员,为成员起别名
# 导入sys模块的argv成员,并为其指定别名v
from sys import argv as v
# 使用导入成员(并指定别名)的语法,直接使用成员的别名访问
print(v[0])
#输出:
#C:\Users\mengma\Desktop\hello.py
例7:使用from import 导入指定的多个成员
# 导入sys模块的argv,winver成员
from sys import argv, winver
# 使用导入成员的语法,直接使用成员名访问
print(argv[0])
print(winver)#sys 的 winver 成员记录了该 Python 的版本号
#输出:
#C:\Users\mengma\Desktop\hello.py
#3.7
例8:使用from import 导入指定的多个成员,并为成员起别名
# 导入sys模块的argv,winver成员,并为其指定别名v、wv
from sys import argv as v, winver as wv
# 使用导入成员(并指定别名)的语法,直接使用成员的别名访问
print(v[0])
print(wv)
#输出:
#C:\Users\mengma\Desktop\hello.py
#3.7
例9:在使用 from import 时,可以一次导入指定模块内的所有成员(此方式不推荐)
#导入sys 棋块内的所有成员
from sys import *
#使用导入成员的语法,直接使用成员的别名访问
print(argv[0])
print(winver)
#一次导入了 sys 模块中的所有成员,这样程序即可通过成员名来使用该模块内的所有成员。该程序的输出结果和前面程序的输出结果完全相同。
注意:一般不推荐使用“from import ”这种语法导入指定模块内的所有成员,因为它存在潜在的风险。
比如同时导入module1 和 module2 内的所有成员,假如这两个模块内都有一个 foo() 函数,那么当在程序中执行如下代码时:foo()
,上面调用的这个 foo() 函数到底是 module1 模块中的还是 module2 模块中的?因此,这种导入指定模块内所有成员的用法是有风险的。但如果换成如下两种导入方式,是可以的:
方法1:
> import module1
import module2 as m2
接下来要分别调用这两个模块中的 foo() 函数就非常清晰。程序可使用如下代码:
module1.foo();
m2.foo()
#使用模块module1 的模块名作为前缀调用foo()函数 #使用module2 的模块别名作为前缀调用foo()函数
方法2:
from module1 import foo as fool
#导入module1 中的foo 成员,并指定其别名为foo1
from module2 import foo as foo2
#导入module2 中的foo 成员,并指定其别名为foo2
此时通过别名将 module1 和 module2 两个模块中的 foo 函数很好地进行了区分,接下来分别调用两个模块中 foo() 函数就很清晰:
foo1() #调用module1 中的foo()函数
foo2() #调用module2 中的foo()函数
参考文章:http://c.biancheng.net/view/2397.html