Python之基础语法(一)

语句

1.一个语句如果过长,可以用\来换行
例如:

x = 10
y = 20
if x == y \
    or \
    x > y:
        print True
else:
    print False

2.如果语句中由括号括起来,那么就可以用直接换行
例如:

a = {
        'like':'fruit',
        'unlike':'gralic'
    }
print a

结果:
{‘like’: ‘fruit’, ‘unlike’: ‘gralic’}


3.使用三引号”’也可以用来折行
例如:

print '''hello,
        world'''

结果:
这里写图片描述


缩进
在Python中,同一语句块中的代码必须保持严格的左对齐(有相同的空格数).

变量

多重赋值:可以同时给多个变量赋相同的值.

例如:
a = b = c = 1

多元赋值:可以同时给不同的变量赋值

例如:
a,b = 1,2

两个 数交换:

a,b = 10,20
print a,b

a,b = b,a   #diao炸天
print a,b

结果:
10 20
20 10

!!!bool类型也可以交换

True,False = False,True
if True:
    print 'ku~'
else:
    print 'wa~'

结果:wa~


作用域与生命周期

在Python中,def,class,lamda会改变变量的作用域.
而使用的条件语句循环语句是不会改变变量的作用域的.
例如:

# coding=utf-8
for i in range(0,10):
    print i, #逗号的作用是不换行

print i     #出了作用域还可以访问

但是,如果使用了def定义了函数出了作用域就不可以再被访问了.
例如:

# coding=utf-8
def fun():
    for i in range(0 ,10):
        print i,

fun()
print i   #i出了fun函数就会失效

结果:
这里写图片描述

内建函数globals()返回的是全局作用域下的变量.
例如:

a = 10
b = [1,2,3,4,5]
print a,b
print globals()

结果:
这里写图片描述
内建函数locals()返回了局部作用域的变量.

对于Python变量的生命周期,Python提供了垃圾回收机制(GC机制)自动识别一个变量的生命周期是否走到尽头,并且在一定的周期内会自动释放空间.


特殊标识符

  • 使用下划线(_)作为变量的前缀和后缀,来标识特殊的标识符.
  • _xx标识一个”私有变量”,要使用from moudule inport*无法导入.

文档字符串
即为自己的代码写一定的注释:
例如:
这里写图片描述
同样的:使用help(函数名)也可以来查看文档信息.
例如:

help(Compare)

注意:文档字符串一定要放在函数/类的开始位置,否则就无法使用_doc_或者help来访问了.


模块文档
同函数与类一样可以有一个文档字符串,一个模块也可以添加文档字符串.
例如:

#!/usr/bin/env python
# coding=utf-8
#Compare.py
'''
define function for compare two number
'''
def Compare(x,y):
    return x > y
#test.py
import compare
print compare.__doc__

结果:
这里写图片描述


对象和类型

在Python中,一切皆对象.
常量:是对象.
字符串:是对象.
函数:是对象.
模块:是对象.
.
.
.
一个对象中包含:


- 身份:每一个对象都有一个唯一的身份表示自己(并不是地址),通过内建函数id()可以查看到这个标识的具体的值.(只要是对象,一定可以通过id()取到它的值)
- 类型:对象的类型决定了对象保存的值,通过内建函数type()可以查看对象的类型.
- 值:对象中保存的具体的值.

对象和引用:
回顾一下在C语言中的变量:
例如:

int a = 10;
//创建了一个变量a,并为变量a分配了一块内存,然后将改地址的内容赋为10

但是在Python中不是这样的:

在解释器中敲下:
a = 10
#在内存中开辟一段空间,并将对象的值和类型填入.

如下图所示:
这里写图片描述

如果此时又存在一个变量:c = 100
那么就是这样的:
这里写图片描述
那么,此时如果将c重新赋为10
这里写图片描述
在Python中,变量名只是一个访问对象的”钥匙”,多个不同的变量可以访问相同的对象.所以这种变量名也叫作对象的”引用”.
例如:

a = 10
c = 10
print id(10)
print type(a)
print a

print id(c)
print type(c)
print c

结果:
这里写图片描述
a与c都是10的变量名.它们的id()相同,说明它们标识的是同一个变量.
所以:在C/C++中,如果多个变量名指向的变量内容相同,是在内存中很多值相同的变量.而Python中,对于变量值相同的多个变量名指向的是同一个变量.即例如上述例子中:Python中只有一个数字10,而如果是C/C++那么就可能是多个10.
那么:在Python中,对于赋值操作符,只是简单的移动了一下标签的位置.例如:a = b,a与b标识着同一块变量.

思考:
为什么在Python中这样设计:
因为在Python中提供GC机制(垃圾回收机制).但是也因此Python语言的性能下降,GC机制的消耗非常大.

猜你喜欢

转载自blog.csdn.net/Yinghuhu333333/article/details/80843932