1.注释

1)注释的作用:

用自己熟悉的语言在代码中添加注释,方便后期自己查看和理解,也方便其他人查看和理解代码含义。

2)单行注释:

以#号开头,#后面的所有内容均不会被程序执行,起到辅助说明的作用。



1 #这是一行注释,不会被程序执行
2 print("hello world")



说明:为了保证代码的可读性,#后面建议先添加一个空格,然后再添加说明文字。

也可以在代码后面添加注释,为了保证代码的可读性,建议#号和代码之间至少两个空格。



1 # 这是一行注释,不会被程序执行
2 print("hello world")  # 这是一行注释



3)多行注释:

如果需要添加的注释文字比较多,可以使用多行注释,以"""号开头,以"""号结尾,中间的文字为需要注释的文字。



1 """
2 这是
3 多行
4 注释
5 """
6 print("hello world")  # 这是一行注释



注:

1.注释不是越多越好,对于一目了然的代码,不需要添加注释。

2.对于复杂的操作,应该在操作开始前写若干行注释。

3.对于不是一目了然的代码,应在行尾添加注释(建议注释应该至少离开代码2个空格)

4.不要描述代码,而是要备注为什么要这样。

2.Python程序执行原理

1)操作系统首先会让CPU把Python解释器的程序复制到内存中。

2)Python解释器根据语法规则,从上到下让CPU翻译Python程序中的代码。

3)CPU负责执行翻译完的代码。

3.缩进(代码块)

Python的代码块不使用大括号{}来控制,Python最具特色的就是使用缩进来写模块。缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个是严格执行的。

a.按照约定俗成的管理,应该始终使用4个空格的缩进;

b.很多Python程序员建议每行不超过80个字符。

c.要将程序的不同部分分开,可以使用空行,但程序中不要使用过多的空行。

多个语句构成代码块:

a.Python中的换行即表示一个语句结束。

b.缩进相同的一组语句构成一个代码块。

c.像if,while,def和class等复合语句,首行以关键字开始,以冒号:结束,该行之后的一行或多行缩进代码构成代码块。

4.一行和多行

同一行显示多条语句

Python可以在同一行中使用多条语句,语句之间使用分号分割。

一条语句以多行来书写

Python语句一般以新行作为语句的结束符,但是可以使用斜杠(\)将一行的语句分为多行显示,如果语句中包含[],{},()就不需要使用多行连接符了。



aa = ["spring", "summer", "autumn",
      "winter"]



5.引号

Python可以使用单引号,双引号,三引号来表示字符串,引号的开始与技术必须使用相同类型的,其中三引号可以由多行组成,在文件的特定地点,三引号可以被当做注释。

6.变量的基本使用

在Python中每个变量在使用前必须赋值,变量赋值以后该变量才会被创建,等号用来给变量赋值。



1 # coding=utf-8
 2 
 3 qq_number = "123456789"  # 定义qq号码变量
 4 qq_password = "12345"  # 定义qq密码变量
 5 
 6 print(qq_number)
 7 print(qq_password)
 8 
 9 -----输出结果-----
10 123456789
11 12345



 说明:

1)变量名只有在第一次出现才是定义变量,变量名再次出现,是直接使用之前定义过的变量(相同的作用域)。

2)Python中定义变量不需要指定变量的类型,运行的时候根据解释器,自动推导出变量中保存数据的准确类型。

3)变量名可以有字母、数字、下划线组织,不能以数字开头,不能与关键字重名。

4)Python中变量名是区分大小写的。

5)在定义变量时,为了保证代码格式,=的左右两边应该个保留一个空格。

6)以下划线开头的变量名都是有特殊意义的:

a.以单下划线开头_foo代表不能直接访问的类属性,需要通过类提供的接口进行访问,不能用from xxx import *导入;

b.以双下划线开头的__foo代表类的私有成员,以双下划线开头和结尾的__foo__代表Python里特殊方法专用的标志,如__init__()代表类的构造函数。

7)在Python中,如果变量名有两个或多个单词组成,可以按如下方式命名:

  1. 每个单词都使用小写字母。
  2. 单词与单词之间使用_下划线连接。 

7.关键字

关键字是Python内部已经使用的标识符,我们定义的变量不能与标识符重名。

通过以下命令查看Python中的关键字:



1 import keyword
2 print(keyword.kwlist)
3 
4 ------输出结果------
5 ['False', 'None', 'True', 'and', 'as', 'assert', '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']



 8.变量的引用

变量和数据是分开存储的,数据保存在内存中的一个位置,变量中保存着数据在内存中的地址,叫做引用,使用id()函数可以查看变量中保存数据所在的内存地址,另外,如果变量已经被定义,当给一个变量赋值的时候,本质上是修改了数据的引用。

函数传递的本质是实参保存数据的引用,而不是实参保存的数据。



1 def test(num):
2     print("在函数内部%d对应的内存地址是%d" % (num, id(num)))
3 
4 
5 a = 10
6 
7 print("a对应的内存地址是%d" % id(a))
8 test(a)



在函数内部返回,实际上返回的是数据的引用,而不是数据本身。



1 def test():
2     result = "hello"
3     print("在函数内部变量 %s 的内存地址为 %d " % (result, id(result)))
4     return result
5 
6 
7 a = test()
8 print("变量a的内存地址为 %d " % id(a))



Python中参数传递采用的是“传对象引用”的方式,如果函数收到的是一个可变对象(列表或者字典)的引用,就能修改对象的原始值,如果函数收到的是一个不可变对象(元组,数字,字符串等)的引用,就不能直接修改原始对象。变量和数据都是保存在内存的,但是变量和数据分开保存,数据保存在内存,变量中保存着数据在内存的地址,变量中记录数据的地址叫做引用,可以使用id()函数查看变量的地址。另外,不可变数据类型由元组,字符串,数字类型int,bool,float,complex,long等,可变的数据类型由列表,字典

在我们使用字典时,字典的key值只能是使用不可变数据类型。



1 # 1.字符串引用
 2 a = '1234'
 3 b = a
 4 a = 'hello'
 5 print("a:", a)
 6 print("b:", b)
 7 print("a的内存地址:", id(a))
 8 print("b的内存地址:", id(b))
 9 # 2.列表的引用
10 a = [1, 2, 3, 4]
11 b = a
12 b[3] = 8
13 print("a:", a)
14 print("b:", b)
15 print("a的内存地址:", id(a))
16 print("b的内存地址:", id(b))
17 
18 -------输出结果-------
19 a: hello
20 b: 1234
21 a的内存地址: 2699912795728
22 b的内存地址: 2699911133872
23 a: [1, 2, 3, 8]
24 b: [1, 2, 3, 8]
25 a的内存地址: 2699911201224
26 b的内存地址: 2699911201224



 9.局部变量和全局变量

局部变量是在函数内部定义的变量,只能在函数内部使用,全局变量是在函数外部定义的变量(没有定义在某一个函数内),所有函数内部都可以使用这个变量。

在函数内部,可以通过全局变量的引用获取对应的数据,但是,不允许直接修改全局变量的引用---使用赋值语句修改全局变量的值。



1 num = 10
 2 
 3 
 4 def func1():
 5     num = 90  #在函数内部定义了一个局部变量
 6     print("func1==>%d" % num)
 7 
 8 
 9 def func2():
10     print("func2==>%d" % num)
11 
12 
13 func1()
14 func2()
15 
16 --------输出---------
17 func1==>90
18 func2==>10



在函数内部修改全局变量,可以使用global关键字。



1 num = 10
 2 
 3 
 4 def func1():
 5     global num #global关键字会告诉解释器后面的变量是一个全局变量,在使用赋值语句时,就不会创建局部变量。
 6     num = 90
 7     print("func1==>%d" % num)
 8 
 9 
10 def func2():
11     print("func2==>%d" % num)
12 
13 
14 func1()
15 func2()
16 
17 --------输出结果-------
18 func1==>90
19 func2==>90



在进行程序开发时代码结构示意图:

Python文件一行后加字 python每一行前加行号_Python

全局变量命名的建议

全局变量名应该增加g_或者gl_的前缀。

10.输出(print)

Python3的输出使用print函数,分为换行输出和不换行输出,在print()的括号中加上字符串,就可以向屏幕上输出指定的文字,括号中还可以放表达式。

1.换行输出:print()默认的输出是换行的。

2.不换行输出:将括号里的所有参数输出在一行,只需要在每一个参数后面加一个,即可。最后一个参数后面没有逗号,参数之间的逗号,输出来之后是空格。

3.循环输出变量的时候,如果不换行,后面可以加上end=' ',即print(b,end=' ')

Python的三种输出:

1.表达式语句和print()函数:

  a.如果想要输出的形式更多样,可以使用str.format()函数来格式化输出值。

  b.如果想将输出的值转成字符串,可以使用repr()或str()函数来实现。

2.文件对象的write方法,标准输出文件使用sys.stdout()引用。

输出时常用的函数:

str():将对象转化为适于人阅读的形式,返回一个对象的string形式。

repr():将对象转化为供解释器读取的形式,返回对象的string形式,可以输出包括转义字符在内的所有字符。

str.format():格式化输出。



# -*- coding:utf-8 -*-

x  = "abcde\nf\ng"

print(str(x))
print(repr(x))

---------输出结果----------
abcde
f
g
'abcde\nf\ng'



str.format()格式化字符串:

1.在括号中的数字用于指向传入对象的format()中的索引位置:



print("{0}和{1}".format("zhangsan", "lisi"))



2.format()中使用了关键字参数,它们的值会指向使用该名字的参数。



print("{0}和{1}和{other}".format("zhangsan", "lisi", other="wangwu"))



11.输入(input)

函数input()让程序暂停运行,等待用户输入一些文本,获取用户输入后,将其值存储到一个变量中,可以方便使用。