您的位置:首页 > 编程语言 > Python开发

Python学习笔记-Python基础

2012-11-29 16:33 423 查看
第三章:Python基础
1、语句语法:
(1)Python 语句中有一些基本规则和特殊字符:
z 井号(#)表示之后的字符为Python 注释
z 换行 (\n) 是标准的行分隔符(通常一个语句一行)
z 反斜线 ( \ ) 继续上一行
z 分号 ( ; )将两个语句连接在一行中
z 冒号 ( : ) 将代码块的头和体分开
z 语句(代码块)用缩进块的方式体现
z 不同的缩进深度分隔不同的代码块
z Python 文件以模块的形式组织
(2)在使用闭合操作符时,单一语句可以跨多行,例如:在含有小括号、中括号、花括号时可以多行书写。另外就是三引号包括下的字符串也可以跨行书写。
2、变量赋值
(1)python的赋值语句是通过引用传递的,不会返回值,且python支持增量赋值,如:+=
-= 、*= 、/= 、%= 、**= 、<<= 、>>=、 &=、 ^=、 |=,这种增量赋值与传统的赋值方式相比,可变对象会被就地修改(无修拷贝引用)。Python 不支持类似 x++ 或 --x 这样的前置/后置自增/自减运算。Python支持多重赋值:>>> x = y = z = 1
(2)多元赋值
>>> (x, y, z) = (1, 2, 'a string')
(3)python在交换两个变量的值时无需构造临时变量
>>> (x, y) = (1, 2)
>>> x
1
>>> y
2
>>> (x, y) = (y, x)
>>> x
2
>>> y
1
3、标示符
(1)python标示符规则:
z 第一个字符必须是字母或下划线(_)
z 剩下的字符可以是字母和数字或下划线
z 大小写敏感
(2) 专用下划线标识符
z _xxx 不用'from module import *'导入
z __xxx__系统定义名字
z __xxx 类中的私有变量名
4、模块结构和布局
# (1) 起始行(Unix)
# (2) 模块文档
# (3) 模块导入
# (4) 变量定义
# (5) 类定义
# (6) 函数定义
# (7) 主程序



绝大部分的模块创建的目的是为了被别人调用而不是作为独立执行的脚本。
时刻记住一个事实,那就是所有的模块都有能力来执行代码。最高级别的 Python 语句--
也就是说,那些没有缩进的代码行在模块被导入时就会执行,不管是不是真的需要执行。由于有这样一个“特性”,比较安全的写代码的方式就是除了那些真正需要执行的代码以外,几乎所有的功能代码都在函数当中。再说一遍,通常只有主程序模块中有大量的顶级可执行代码,所有其它被导入的模块只应该有很少的顶级执行代码,所有的功能代码都应该封装在函数或类当中。
5、内存管理
(1)
z 变量无须事先声明
z 变量无须指定类型
z 程序员不用关心内存管理
z 变量名会被“回收”
z del 语句能够直接释放资源
变量只有被创建和赋值后才能被使用。
(2)引用计数:
当对象被创建并(将其引用)赋值给变量时,该对象的引用计数就被设置为 1。
当同一个对象(的引用)又被赋值给其它变量时,或作为参数传递给函数,方法或类实例
时,或者被赋值为一个窗口对象的成员时,该对象的一个新的引用,或者称作别名,就被创建(则该对象的引用计数自动加 1)。例如:
x = 3.14
y = x
语句 x=3.14创建了一个浮点数对象并将其引用赋值给 x。该对象的引用计数被设置为 1。语句 y=x 创建了一个指向同一对象的别名 y。事实上并没有为 Y 创建一个新对象,而是该对象的引用计数增加了 1 次(变成了 2)
总之,对象的引用计数在
#对象被创建
x = 3.14
#或另外的别名被创建
y = x
#或被作为参数传递给函数(新的本地引用)
foobar(x)
#或成为容器对象的一个元素
myList = [123, x, 'xyz']
时计数器增加。
减少引用计数:
当对象的引用被销毁时,引用计数会减小。最明显的例子就是当引用离开其作用范围时,这种情况最经常出现在函数运行结束时,所有局部变量都被自动销毁,对象的引用计数也就随
之减少。
#一个本地引用离开了其作用范围。比如foobar()函数结束时。
foo = 'xyz'
bar = foo
foo = 123
当字符串对象"xyz"被创建并赋值给 foo 时,它的引用计数是 1. 当增加了一个别名 bar时,引用计数变成了2,不过当foo被重新赋值给整数对象123时,xyz对象的引用计数自动减 1,又重新变成了 1.
#对象的别名被显式的销毁。
del y # or del x
#对象的一个别名被赋值给其它的对象
x = 123
#对象被从一个窗口对象中移除
myList.remove(x)
#窗口对象本身被销毁
del myList # or goes out-of-scope
Del 语句会删除对象的一个引用,它的语法是:
del obj1[, obj2[,... objN]]
例如,在上例中执行 del y 会产生两个结果:
1:从现在的名字空间中删除 y
2: x 的引用计数减一
练习:
3-1:
Python语言中对象的类型和内存都是运行时确定的。在创建也就是赋值时,解释器会根据语法和右侧的操作数来决定新对象的类型。
因为变量在第一次赋值的时候就被自动声明了。Python是无类型的语言。
Python既是动态类型语言(因为它不使用显示数据类型声明,在运行期间才去确定数据类型),又是强类型语言(因为只要一个变量获得了一个数据,它就一直就是这个数据的数据类型了)。
3-2:
函数没有定义返回的数据类型。 Python不需要提定返回值的数据类型;甚至不需要指定是否有返回值。实际上,每个Python函数都返回一个值;如果函数执行过return语句,它将返回指定的值,否则将返回None(Python的空值)。
3-3:
因为变量名__xxx__对Python来说有特殊含义,对于普通的变量应当避免这种命名风格。
3-4:
可以,用分号可以实现
3-5:
可以,可以用\实现。在三引号里面的内容也可以实现。
3-6:
1,2,3;3,1,2
3-11:
#!/usr/bin/env Python

'readTextFile.py --read and display text file'
# get filename
fname = raw_input('Enter filename: ')
print

# attempt to open file forreading
try:
fobj = open(fname, 'r')
except IOError, e:
print "*** file openerror:", e
else:
# display contents to thescreen
for eachLine in fobj:
print eachLine.strip() #str.strip(‘charter’)函数能够删除str的头、尾字符串中包含‘charter’中的字符
#print eachLine,
fobj.close()

3-12:
#!/usr/bin/env python
# -*- coding: utf-8-*-
'''
Created on2012-11-29
@author: Eliot
make and read a file
'''
import os
ls = os.linesep;

def makefile():
#input thefile name
while True:
aFileName = raw_input('Enter a file Name:')
if os.path.exists(aFileName):
print '%s alreadyexists!' % (aFileName)
else:
break
#input thefile text
text = []
print "\nEnter lines('.' by itself to quit).\n"
while True:
entry = raw_input('>')
if entry == '.':
break
else:
text.append(entry)
#input thefile
file = open(aFileName, 'w')
file.writelines(['%s%s' % (x, ls) for x in text])
file.close()
print 'Make file over!'
def readfile():
#input thefile name
while True:
fileName = raw_input('Enter a file Name to read:')
if os.path.exists(fileName):
break
else:
print 'The file isnot exists!'
#read thefile
file = open(fileName, 'r')
for x in file:
print x,
print 'Read file over!'
def main():
while True:
print '1.make file2.read file 3.exit'
ch = int(raw_input(':'))
if ch == 1:
makefile()
elif ch == 2:
readfile()
else:
break
print 'The game is over!'
if __name__ == '__main__':
main()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python 基础 学习笔记