Python 基础语法(一)

Python的特点

1.简单

    Python是一种代表简单思想的语言。

2.易学

   Python有极其简单的语法。

3.免费、开源

   Python是FLOSS(自由/开放源码软件)之一。

4.高层语言

  使用Python编写程序时无需考虑如何管理程序使用的内存一类的底层细节。

5.可移植性

  Python已被移植到很多平台,这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、

  BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、

  Windows CE甚至还有PocketPC。

6.解释性

  可以直接从源代码运行。在计算机内部,python解释器把源代码转换为字节码的中间形式,然后再把它翻译成计算机使用的机器语言。

7.面向对象

  Python既支持面向过程编程也支持面向对象编程。

8.可扩展性

    部分程序可以使用其他语言编写,如c/c++。

9.可嵌入型

    可以把Python嵌入到c/c++程序中,从而提供脚本功能。

10.丰富的库

   Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、

  电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。


---------------分割线------------------------以下是Python的基本语法---------------------------------------------------------

一、基本概念

  1. python中数有四种类型:整数、长整数、浮点数和复数。

整数, 如 1

长整数 是比较大的整数

浮点数 如 1.23、3E-2

复数 如 1 + 2j、 1.1 + 2.2j

  2. 字符串(字符的序列)

python中单引号和双引号使用完全相同。

使用三引号('''或""")可以指定一个多行字符串。

转义符 '\'

自然字符串, 通过在字符串前加r或R。 如 r"this is a line with \n" 则\n会显示,并不是换行。

python允许处理unicode字符串,加前缀u或U, 如 u"this is an unicode string"。

字符串是不可变的。

按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。

3. 标识符的命名

第一个字符必须是字母表中字母或下划线'_'。

标识符的其他的部分有字母、数字和下划线组成。

标识符对大小写敏感。

4. 对象

   python程序中用到的任何“东西”都成为“对象”。

5. 逻辑行和物理行

   物理行是我们在编写程序时看到的,逻辑行则是python看到的。

    python中分号;标识一个逻辑行的结束,但是实际中一般每个物理行只写一个逻辑行,可以避免使用分号。

    多个物理行中可以写一个逻辑行,如下:

s="peter is \

writing this article"

    上面\的使用被称为‘明确的行连接’, 又如:

print\

"peter"

  6. 缩进

    空白在python是非常重要的,行首的空白是最重要的,又称为缩进。行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而决定语句分组。这意味着同一层次的语句必须有相同的缩进,每一组这样的语句称为一个块。

  注意:不要混合使用空格和制表符来缩进,因为在跨越不同的平台时无法正常工作。

二、运算符与表达式

  1. 运算符与其用法

运算符名称说明例子

+加两个对象相加3 + 5得到8。'a' + 'b'得到'ab'。

-减得到负数或是一个数减去另一个数-5.2得到一个负数。50 - 24得到26。

*乘两个数相乘或是返回一个被重复若干次的字符串2 * 3得到6。'la' * 3得到'lalala'。

**幂返回x的y次幂3 ** 4得到81(即3 * 3 * 3 * 3)

/除x除以y4/3得到1(整数的除法得到整数结果)。4.0/3或4/3.0得到1.3333333333333333

//取整除返回商的整数部分4 // 3.0得到1.0

%取模返回除法的余数8%3得到2。-25.5%2.25得到1.5

<<左移把一个数的比特向左移一定数目(每个数在内存中都表示为比特或二进制数字,即0和1)2 << 2得到8。——2按比特表示为10

>>右移把一个数的比特向右移一定数目11 >> 1得到5。——11按比特表示为1011,向右移动1比特后得到101,即十进制的5。

&按位与数的按位与5 & 3得到1。

|按位或数的按位或5 | 3得到7。

^按位异或数的按位异或5 ^ 3得到6

~按位翻转x的按位翻转是-(x+1)~5得到6。

<小于返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。5 < 3返回0(即False)而3 < 5返回1(即True)。比较可以被任意连接:3 < 5 < 7返回True。

>大于返回x是否大于y5 > 3返回True。如果两个操作数都是数字,它们首先被转换为一个共同的类型。否则,它总是返回False。

<=小于等于返回x是否小于等于yx = 3; y = 6; x <= y返回True。

>=大于等于返回x是否大于等于yx = 4; y = 3; x >= y返回True。

==等于比较对象是否相等x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False。x = 'str'; y = 'str'; x == y返回True。

!=不等于比较两个对象是否不相等x = 2; y = 3; x != y返回True。

not布尔“非”如果x为True,返回False。如果x为False,它返回True。x = True; not y返回False。

and布尔“与”如果x为False,x and y返回False,否则它返回y的计算值。x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象称为短路计算。

or布尔“或”如果x是True,它返回True,否则它返回y的计算值。x = True; y = False; x or y返回True。短路计算在这里也适用。

2. 运算符优先级(从低到高)

运算符描述

lambdaLambda表达式

or布尔“或”

and布尔“与”

not x布尔“非”

in,not in成员测试

is,is not同一性测试

<,<=,>,>=,!=,==比较

|按位或

^按位异或

&按位与

<<,>>移位

+,-加法与减法

*,/,%乘法、除法与取余

+x,-x正负号

~x按位翻转

**指数

x.attribute属性参考

x[index]下标

x[index:index]寻址段

f(arguments...)函数调用

(experession,...)绑定或元组显示

[expression,...]列表显示

{key:datum,...}字典显示

'expression,...'字符串转换

3. python 控制台输出使用print

print"abc"#打印abc并换行print"abc%s"%"d"#打印abcdprint"abc%sef%s"% ("d","g")#打印abcdefg

三、控制流

1. if 语句

i = 10

n = int(raw_input("enter a number:"))

ifn == i:

print"equal"

elifn < i:

print"lower"

else:

print"higher"

2. while语句

whileTrue:

pass

else:

pass

#else语句可选,当while为False时,else语句被执行。 pass是空语句。

3. for 循环 for..in

foriinrange(0,5):

printi

else:

pass

# 打印0到4

  注:当for循环结束后执行else语句;

    range(a, b)返回一个序列,从a开始到b为止,但不包括b,range默认步长为1,可以指定步长,range(0,10,2);

4. break语句

终止循环语句,如果从for或while中终止,任何对应循环的else将执行。

5. continue语句

    continue语句用来调过当前循环的剩余语句,然后继续下一轮循环。

四、函数

函数通过def定义。def关键字后跟函数的标识符名称,然后跟一对圆括号,括号之内可以包含一些变量名,该行以冒号结尾;接下来是一块语句,即函数体。

defsumOf(a, b):

returna + b

1. 函数形参

    函数中的参数名称为‘形参’,调用函数时传递的值为‘实参’

2. 局部变量

    在函数内定义的变量与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是局部的。这称为变量的作用域。

    global语句, 为定义在函数外的变量赋值时使用global语句。

deffunc():

globalx

print"x is ", x

x =1

x =3

func()

printx

#3

#1 

3. 默认参数

    通过使用默认参数可以使函数的一些参数是‘可选的’。

defsay(msg,times=1):

printmsg *times

say("peter")

say("peter",3)

注意:只有在形参表末尾的那些参数可以有默认参数值,即不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参,只是因为赋给形参的值是根据位置而赋值的。

4. 关键参数

    如果某个函数有很多参数,而现在只想指定其中的部分,那么可以通过命名为这些参数赋值(称为‘关键参数’)。

    优点:不必担心参数的顺序,使函数变的更加简单;假设其他参数都有默认值,可以只给我们想要的那些参数赋值。

deffunc(a, b=2, c=3):

print "ais%s, bis%s, cis%s" % (a, b, c)

func(1) #ais1, bis2, cis3func(1,5) #ais1, bis5, cis3func(1, c =10) #ais1, bis2, cis10func(c =20, a =30) #ais30, bis2, cis20

5. return 语句

    return语句用来从一个函数返回,即跳出函数。可从函数返回一个值。

    没有返回值的return语句等价于return None。None表示没有任何东西的特殊类型。

6. DocStrings(文档字符串)

deffunc():

'''This is self-defined function

Do nothing'''

pass

printfunc.__doc__

#This is self-defined function

#

#Do nothing

五、模块

  模块就是一个包含了所有你定义的函数和变量的文件,模块必须以.py为扩展名。模块可以从其他程序中‘输入’(import)以便利用它的功能。

  在python程序中导入其他模块使用'import', 所导入的模块必须在sys.path所列的目录中,因为sys.path第一个字符串是空串''即当前目录,所以程序中可导入当前目录的模块。

1. 字节编译的.pyc文件

    导入模块比较费时,python做了优化,以便导入模块更快些。一种方法是创建字节编译的文件,这些文件以.pyc为扩展名。

    pyc是一种二进制文件,是py文件经编译后产生的一种byte code,而且是跨平台的(平台无关)字节码,是有python虚拟机执行的,类似于

  java或.net虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的。

2. from .. import

    如果想直接使用其他模块的变量或其他,而不加'模块名+.'前缀,可以使用from .. import。

    例如想直接使用sys的argv,from sys import argv 或 from sys import *

3. 模块的__name__

    每个模块都有一个名称,py文件对应模块名默认为py文件名,也可在py文件中为__name__赋值;如果是__name__,说明这个模块被用户

  单独运行。

4. dir()函数

    dir(sys)返回sys模块的名称列表;如果不提供参数,即dir(),则返回当前模块中定义名称列表。

    del -> 删除一个变量/名称,del之后,该变量就不能再使用。

六、数据结构

  python有三种内建的数据结构:列表、元组和字典。

1. 列表

    list是处理一组有序项目的数据结构,列表是可变的数据结构。列表的项目包含在方括号[]中,eg: [1, 2, 3], 空列表[]。

判断列表中是否包含某项可以使用in, 比如 l = [1, 2, 3]; print 1 in l; #True;支持索引和切片操作;索引时若超出范围,则IndexError;使用函数len()查看长度;使用del可以删除列表中的项,eg: del l[0] # 如果超出范围,则IndexError

    list函数如下:

append(value)---向列表尾添加项value

l = [1, 2, 2]

l.append(3)#[1, 2, 2, 3]

count(value)---返回列表中值为value的项的个数

l = [1, 2, 2]

print l.count(2)# 2

extend(list2)---向列表尾添加列表list2

l = [1, 2, 2]

l1 = [10, 20]

l.extend(l1)

print l#[1, 2, 2, 10, 20]

index(value, [start, [stop]])---返回列表中第一个出现的值为value的索引,如果没有,则异常 ValueError

l = [1, 2, 2]

a = 4

try:

print l.index(a)

except ValueError, ve:

print"there is no %d in list"% a

insert(i, value)---向列表i位置插入项vlaue,如果没有i,则添加到列表尾部

l = [1, 2, 2]

l.insert(1, 100)

printl#[1, 100, 2, 2]

l.insert(100, 1000)

printl#[1, 100, 2, 2, 1000]

pop([i])---返回i位置项,并从列表中删除;如果不提供参数,则删除最后一个项;如果提供,但是i超出索引范围,则异常IndexError

l = [0,1,2,3,4,5]

printl.pop()# 5print l #[0, 1, 2, 3, 4]

printl.pop(1)#1print l #[0, 2, 3, 4]

try:

l.pop(100)

exceptIndexError, ie:

print"index out of range"

remove(value)  ---删除列表中第一次出现的value,如果列表中没有vlaue,则异常ValueError

l = [1,2,3,1,2,3]

l.remove(2)

printl#[1, 3, 1, 2, 3]

try:

l.remove(10)

exceptValueError, ve:

print"there is no 10 in list"

reverse()---列表反转

l = [1, 2, 3]

l.reverse()

print l#[3, 2, 1]

sort(cmp=None, key=None, reverse=False)---列表排序

【Python Library Reference】

cmp:cmp specifies acustomcomparisonfunctionoftwo arguments (iterable elements) which shouldreturna negative, zeroorpositive number dependingonwhether the first argumentisconsidered smaller than, equalto,orlarger than the second argument:

"cmp=lambda x,y: cmp(x.lower(), y.lower())"

key

作者:Peter

出处:http://www.cnblogs.com/Peter-Zhang/

如果你对编程感兴趣或者想往编程方向发展,可以关注微信公众号【筑梦编程】,大家一起交流讨论!小编也会每天定时更新既有趣又有用的编程知识!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351