Python编程基础之一简介

一、简介

       对Python语言的主要特性简单介绍,可以快速融入Python中,并对其语言结构有一定的了解。

二、详解

1、启动Python

       有三种不同的办法来启动 Python,最简单的方式就是交互式的启动解释器(如shell)每次输入一行Python代码来执行另外一种启动 Python 的方法是运行 Python 脚本这样会调用相关的脚本解释器最后一种办法就是用集成开发环境中的图形用户界面运行Python集成开发环境通常整合了其他的工具例如集成的调试器、文本编辑器而且支持各种像 CVS 这样的源代码版本
控制工具。

       本文在linux系统下shell窗口,输入python命令,然后可以在 交互式解释器中进行python代码的练习。


2、print语句输出

      (1)C语言中通过printf()函数输出数据到屏幕,shell中使用echo命令来输出程序结果,在Python的交互式解释器中用print语句来显示变量的字符串或查看该变量的原始值。

      (2)下划线_在解释器中有特别的含义,表示最后一个表达式的值,下划线变量会包含字符串:

      (3)print语句与字符串格式运算符%结合使用,可实现字符串替换功能(类似C语言中的printf()函数)。

>>> print "%s is number %d!" % ("Python", 1)
Python is number 1!
       其中 %s表示由一个字符串来替换,%d 表示由一个整数来替换。另外一个很常用的就是%f,它表示由一个浮点数来替换。Python非常灵活,即使你将数字传递给%s,也不会像其他要求严格的语言一样引发严重后果。
      (4)print语句也支持将输出重定向到文件(Python2.0新增),符号>>用来重定向输出
>>> import sys
>>> print >> sys.stderr, "error input"   #将输出重定向到标准错误输出

error input
>>> logfile = open('/tmp/mylog.txt', 'a')
>>> print >> logfile, 'error input'      #将输出重定向到日志文件

>>> logfile.close()

3、内建函数raw_input()输入

       raw_input()内建函数可以从用户输入得到数据,它读取标准输入,并将读取到的数据赋值给指定的变量。 还可以使用 int() 内建函数将用户输入的字符串转换为整数,然后进行数学运算。

>>> passwd=raw_input("Enter password:")
Enter password:123456
>>> print passwd
123456
>>> num=raw_input("Enter number:")
Enter number:123
>>> number=int(num)
>>> print number
123
注:通过用函数名作为 help()的参数就能得到相应函数的帮助信息。

4、Python注释

      Python使用#符号表示注释,从#开始直到一行结束的内容都是注释。

5、Python运算符

(1)Python的标准算术运算符有:+、-、*、/、//、%、**。

        加、减、乘、除和取余都是标准运算符。Python有两种除法运算符单斜杠用作传统除法指的是两个操作数都是整数,取比商小的最大整数),双斜杠用作浮点除法对结果进行四舍五入),点除法是真正的除法,不管操作数是什么类型浮点除法总是执行真正的除法。
        还有一个乘方运算符,双星号(**)。尽管一直强调这些运算符的算术本质,但是请注意对于其它数据类型,有些运算符是被重载了,比如字符串和列表。

        运算符的优先级是:+和-优先级最低,*、/、//、%优先级较高, 单目运算符+和-优先级更高,乘方的优先级最高。

(2)Python的标准比较运算符和逻辑运算符

        比较运算根据表达式的值的真假返回布尔值,包括<<=>>===!=<>。其中!= 和<>都表示“不等于”比较运算符。

        使用逻辑运算符可以将任意表达式连接在一起,并得到一个布尔值,包括and、or和not。

6、Python变量和赋值

      Python中变量名规则:是一些字母开头的标识符(指大写或小写字母,还包括下划线_ ),其它的字符可以是数字、字母或下划线。Python变量名是大小写敏感的,即变量 "cAsE" 与 "CaSe" 是两个不同的变量。
      Python 是动态类型语言,也就是说不需要预先声明变量的类型。 变量的类型和值在赋值那一刻被初始化。变量赋值通过等号来执行。
      Python支持增量赋值,也就是运算符和等号合并在一起,即n=n*10可以改写成增量赋值的方式n*=10,但 不支持C语言中的自增1和自减1的运算符,因为+ 和-也是单目运算符,Python会将--n解释为-(-n)从而得到n,同样 ++n 的结果也是 n。

7、Python基本数字类型

      Python 支持五种基本数字类型,其中有三种是整数类型,int (有符号整数)、long (长整数)、bool (布尔值)、float (浮点值)、complex (复数)。如下图:


      请不要将Python的长整数与C语言的长整数混淆。Python的长整数所能表达的范围远远超过C语言的长整数,事实上Python长整数仅受限于用户计算机的虚拟内存总数。从长远来看,整型与长整型正在逐步统一为一种整数类型。从Python2.3开始,再也不会报整型溢出错误,结果会自动的被转换为长整数。在未来版本的Python中,两种整数类型将会无缝结合,长整数后缀 “L”也会变得可有可无。

       布尔值是特殊的整数。 尽管布尔值由常量True和False来表示,如果将布尔值放到一个数值上下文环境中(比方将True与一个数字相加),True会被当成整数值 1,而 False则会被当成整数值 0。

       复数(包括-1的平方根,即所谓的虚数)在其它语言中通常不被直接支持(一般通过类来实现)。
       其实还有第六种数其实还有第六种数字类型: decimal,用于十进制浮点数。不过它并不是内建类型,必须先导入decimal模块才可以使用这种数值类型。 由于需求日渐强烈,Python 2.4 增加了这种类型。

8、Python字符串

       Python中字符串被定义为引号之间的字符集合。Python 支持使用成对的单引号或双引号( 单引号基本等同于双引号,它们是为了在使用单引号的时候可以在字符串里面使用双引号,同理使用双引号时也可以在字符串里面使用单引号),及三引号(三个连续的单引号或者双引号)可以用来包含特殊字符。使用索引运算符([ ] )和切片运算符([:])可以得到子字符串。字符串有其特有的索引规则:第一个字符的索引是0,最后一个字符的索引是-1,加号+用于字符串连接运算,星号*则用于字符串重复。

>>> pyStr='I like "python"'
>>> print pyStr
I like "python"
>>> pyStr2="let's go"
>>> print pyStr2
let's go
>>> pyStr[-1]
'"'
>>> pyStr[:3]
'I l'
>>> pyStr+pyStr2
'I like "python"let\'s go'
>>> pyStr + ' ' + pyStr2
'I like "python" let\'s go'
>>> pyStr * 3
'I like "python"I like "python"I like "python"'
>>> '-' * 20
'--------------------'
>>> pyStr3='''python
... is good'''
>>> print pyStr3
python
is good
>>> pyStr3
'python\nis good'

9、Python列表和元组

      可以将列表和元组当成普通的“数组”,它能保存任意数量任意类型的Python对象。和数组一样,通过从 0 开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象。

      列表和元组有几处重要的区别:列表元素用中括号[ ]包裹,元素的个数及元素的值可以改变;而元组元素用小括号()包裹,不可以更改其中元素的值(尽管它们本身的内容可以),元组可以看成是只读的列表。通过切片运算( [ ] 和 [:] )可以得到子集,这一点与字符串的使用方法一样,注意元组进行切片运算得到的结果也是元组,其中元素的值不能更改。

10、Python字典

        字典是Python中的映射数据类型,工作原理类似C++中的map,由键-值(key-value)对构成。几乎所有类型的Python对象都可以用作键值,不过一般还是以数字或者字符串最为常用。
         键值可以是任意类型的Python对象,字典元素用大括号({ })包裹。

>>> pyDict={'host' : 'earth'}
>>> pyDict['port']=80
>>> pyDict
{'host': 'earth', 'port': 80}
>>> pyDict.keys()
['host', 'port']
>>> for key in pyDict:
...   print key, pyDict[key]
... 
host earth
port 80

11、Python代码块及缩进对齐

        Python代码块通过缩进对齐表达代码逻辑而不是使用大括号。因为没有了额外的字符,程序的可读性更高,而且缩进完全能够清楚地表达一个语句属于哪个代码块。当然,代码块也可以只有一个语句组成。

12、Python的控制语句

(1)if语句

标准if条件语句的语法如下:

if expression:
    if_suite
        如果表达式的值非0或者为布尔值 True,则代码组if_suite被执行; 否则就去执行下一条语句。 代码组是一个 Python 术语, 它由一条或多条语句组成,表示一个子代码块,条件条达式并不需要用括号括起来。

        Python当然也支持else语句,还支持elif语句。
if expression1:
    if_suite
elif expression2:
    elif_suite
else:
    else_suite

Python中暂时没有switch/case语句,case可以通过if-elif-else或者for 循环来迭代cases列表。
(2)while循环
标准 while 条件循环语句的语法类似 if,都要使用缩进来分隔每个子代码块。
while expression:
    while_suite
        语句while_suite会被连续不断的循环执行,直到表达式的值变成0或False;接着Python会执行下一句代码。 类似 if 语句,Python 的 while 语句中的条件表达式也不需要用括号括起来。
(3)for循环和range()内建函数

        Python中的for循环与传统的for循环(计数器循环)不太一样, 它更象 shell 脚本里的 foreach 迭代。Python 中的 for 接受可迭代对象(例如序列或迭代器)作为其参数,每次迭代其中一个元素。

        Python 提供了一个 range()内建函数来生成数字列表,它经常和len()函数一起用于字符串索引。

>>> foo = 'abc'
>>> for i in range(len(foo)):
...   print foo[i], '(%d)' % i
... 
a (0)
b (1)
c (2)

13、Python的列表解析

       这是一个让人欣喜的术语,表示你可以在一行中使用一个 for 循环将所有值放到一个列表。

>>> squared = [x ** 2 for x in range(4)]

列表解析甚至能做更复杂的事情,比如挑选出符合要求的值放入列表:

>>> sqdEvens = [x ** 2 for x in range(8) if not x % 2]
>>> for i in sqdEvens:
...   print i
... 
0
4
16
36

14、Python的文件和内建函数open()、file()

        文件访问是相当重要的一环,在一些工作做完之后,要将它保存到持久存储是很重要的。
(1)打开文件
handle = open(file_name, access_mode = 'r')

        file_name变量包含要打开的文件的字符串名字,access_mode中'r'表示读取,'w' 表示写入, 'a' 表示添加。其它可能用到的标声还有 '+' 表示读写,'b'表示二进制访问。如果未提供access_mode,默认值为'r'。如果open()成功,一个文件对象句柄会被返回。所有后续的文件操作都必须通过此文件句柄进行。当一个文件对象返回之后,就可以访问它的一些方法,比如readlines()和close()。文件对象的方法属性也必须通过句点属性标识法访问, 即在对象名和属性名之间加一个句点:object.attribute。
        file()内建函数是新添加到Python当中的。它的功能等同于 open(),不过file()这个名字可以更确切的表明它是一个工厂函数。(生成文件对象)类似 int()生成整数对象,dict()生成字典对象。

15、Python的错误和异常

        编译时会检查语法错误,不过Python也允许在程序运行时检测错误。当检测到一个错误,Python解释器就引发一个异常,并显示异常的详细信息。程序员可以根据这些信息迅速定位问题并进行调试,并找出处理错误的办法。
        要给你的代码添加错误检测及异常处理, 只要将它们封装在try-except语句当中。 try之后的代码组,就是你打算管理的代码。except 之后的代码组,则是你处理错误的代码。
        程序员也可以通过使用 raise 语句故意抛出一个异常。
>>> try:
...   filename = raw_input('Enter file name: ')
...   fobj = open(filename, 'r')
...   for eachLine in fobj:
...     print eachLine, fobj.close()
... except IOError, e:
...   print 'file open error:', e
... 
Enter file name: a
file open error: [Errno 2] No such file or directory: 'a'

16、Python的函数

          Python中的函数使用小括号()调用。函数在调用之前必须先定义。如果函数中没有return语句, 就会自动返回None对象。

        Python 是通过引用调用的, 这意味着函数内对参数的改变会影响到原始对象。不过事实上只有可变对象会受此影响, 对不可变对象来说,它的行为类似按值调用。

        定义函数:
def function_name([arguments]):
    "optional documentation string"
    function_suite
        定义一个函数的语法由def关键字及紧随其后的函数名再加上该函数需要的几个参数组成。函数参数arguments是可选的这个语句由一个冒号(:)结束之后是代表函数体的代码组
        Python语言中调用函数与其它高级语言中一样,函数名加上函数运算符, 一对小括号。括号之间是所有可选的参数。即使一个参数也没有,小括号也不能省略。
        函数的参数可以有一个默认值,如果提供有默认值,在函数定义中, 参数以赋值语句的形式提供。事实上这仅仅是提供默认参数的语法,它表示函数调用时如果没有提供这个参数,它就取这个值做为默认值。

17、Python的类

        类是面向对象编程的核心,它扮演相关数据及逻辑的容器角色。它们提供了创建“真实”对象(也就是实例)的蓝图。
因为Python并不强求必须以面向对象的方式编程。
       定义类:
class ClassName(base_class[es]):
    "optional documentation string"
    static_member_declarations
    method_declarations

        使用class关键字定义类,可以提供一个可选的父类或者说基类;如果没有合适的基类,那就使用object作为基类。class行之后是可选的文档字符串,静态成员定义及方法定义。

        类中所有名字开始和结束都有两个下划线的方法都是特殊方法,__init__()方法是一个特殊名字,当一个类实例被创建时 __init__()方法会自动执行,在类实例创建完毕后执行(似构建函数)。它仅仅是你的对象创建后执行的第一个方法,它的目的是执行一些该对象的必要的初始化工作,通过创建自己的__init__()方法可以覆盖默认的__init__()方法(默认的方法什么也不做)从而能够修饰刚刚创建的对象。

        类中self,是类实例自身的引用。类似其他语言中通常使用一个名为this的标识符。
        创建一个类实例就像调用一个函数, 它们确实拥有一样的语法。它们都是可调用对象。类实例使用同样的函数运算符调用一个函数或方法。

18、Python的模块

        模块是一种组织形式,它将彼此有关系的Python代码组织到一个个独立文件当中。模块可以包含可执行代码,函数和类或者这些东西的组合。
        当你创建了一个Python源文件,模块的名字就是除掉.py 后缀的名称。一个模块创建之后, 你可以从另一个模块中使用 import 语句导入这个模块来使用(import module_name)一旦导入完成一个模块的属性函数和变量可以通过 .句点属性标识法访问,如module.function()、module.variable。

19、Python的部分内建函数

python中有很多实用的内建函数,在实际的应用中可使用。

   函数                                                                                                        描述
dir([obj])                                  显示对象的属性,如果没有提供参数, 则显示全局变量的名字
help([obj])                              以一种整齐美观的形式 显示对象的文档字符串, 如果没有提供任何参数, 则会进入交互式帮助。
int(obj)                                     将一个对象转换为整数
len(obj)                                    返回对象的长度
open(fn, mode)                       以mode('r' = 读, 'w'= 写)方式打开一个文件名为fn的文件
range([[start,]stop[,step])       返回一个整数列表。起始值为start,结束值为stop - 1; start默认值为0,step默认值为1。
raw_input(str)                         等待用户输入一个字符串,可以提供一个可选的参数str用作提示信息。
str(obj)                                     将一个对象转换为字符串
type(obj)                                  返回对象的类型(返回值本身是一个 type 对象!)

例如:
启动 Python 交互解释器,键入import sys以导入sys模块。然后执行 dir(sys) ,可以看到 sys模块的所有属性了。
可以调用 sys.exit() 函数,这是一种热键之外的另一种退出Python解释器的方式。

三、总结

(1)本文仅是简单的介绍python的内容,并未做详细的解析,后面内容将展开深入的探讨。
(2)若有不足,请留言,在此先感谢!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乌托邦2号

博文不易,支持的请给予小小打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值