python的基本语法和语言_Python基本语法

1. 定义常量:

因为Python的常量相对其他语言,可能略显麻烦。不仅仅只是单靠const就可以完成常量定义的。在Python中定义常量需要用对象的方法来创建。

我们需要在Lib的目录下创建一个const.py的文件,lib目录下主要是放一些模块的东西。

class_const(object):class ConstError(TypeError):pass

def __setattr__(self, name, value):if self.__dict__.has_key(name):raise self.ConstError, "Can't rebind const (%s)" %name

self.__dict__[name]=valuedef __delattr__(self, name):if name in self.__dict__:raise self.ConstError, "Can't unbind const (%s)" %nameraiseNameError, nameimportsys

sys.modules[__name__] = _const()

这就是一个定义常量对象的方法,Python定义常量首先需要有对象的概念,所以上面我们已经简单了解了对象的定义了。至于上面这个const类呢,大家略看一下就可以了,这种东西百度搜索Python定义常量一大堆。我们只需要在lib文件夹下面建立一个const.py的文件,将上述代码拷贝到const.py文件里。这样使用常量就很方便了。

#encoding=utf-8

import const #导入常量文件

const.value=3 #声明常量

print(const.value)

const.avc=4

print(const.avc)

const.avc=5 #试图改变常量的值,报错

2.  数的类型:

整数型(int) 例:0、6、-2、2015、-203

长整型(long) 例:56990l、-12694l、938476l

浮点型(float) 例:7.5325、9.434、6.66

布尔型(bool) 例:True、False

复数型(complex) 例:6+4j、-5+12j、98+9j

complex()函数可以使用参数real(实部) + imag(虚部)*j方式创建一个复数。也可以转换一个字符串的数字为复数;或者转换一个数字为复数。如果第一个参数是字符串,第二个参数不用填写,会解释这个字符串且返回复数;不过,第二个参数不能输入字符串方式,否则会出错。real和imag参数可以输入数字,如果imag参数没有输入,默认它就是零值,这 个函数就相当于int()或float()的功能。如果real和imag参数都输入零,这个函数就返回0j。有了这个函数,就可以很方便地把一个列表转 换为复数的形式。

注意:当想从一个字符串的复数形式转换复数时,需要注意的是在字符串中间不能出现空格,比如写成complex(‘1+2j’),而不是写成complex(‘1 +2j’), 否则会返回ValueError异常。

#encoding=utf-8

print(complex(1)) #第二个参数不填,默认为0j

print(complex("2")) #第一个参数为字符串,第二个参数不用填写,填写报错

print(complex('2'))print(complex('''2'''))print(complex("""2"""))print(complex("2+3j")) #“ 2+3j ”中加号的两边不能有空格否则报错,错误写法"2+ 3j","2 + 3j","2 +3j"

print(complex(3,4))

array= [1,3,5,7]for i inarray:print(complex(i,i+1))

结果:

(1+0j)

(2+0j)

(2+0j)

(2+0j)

(2+0j)

(2+3j)

(3+4j)

(1+2j)

(3+4j)

(5+6j)

(7+8j)

3. 字符串类型:

单引号字符串:'hello'

双引号字符串:"hello"

三引号字符串:"""hello"""或'''hello'''

注:三引号包含的字符串可由多行组成,一般可表示大段的叙述性字符串。在使用时基本没有差别,但双引号和三引号("""...""")中可以包含单引号, 三引号('''...''')可以包含双引号,而不需要转义。

#encoding=utf-8

str0='str0 "str0" """str0"""' #单引号中使用双引号会被保留下来,不需要转义,但是不能使用单引号

print("str0 {0}".format(str0))

str1="str1 'str1' '''str1'''" #同理双引号中使用单引号也会被保留下来,但是不能使用双引号

print("str1 {0}".format(str1))

str2="""str2 "str2" 'str2'

str2

str2""" #使用三引号可以保留下格式来 但是要保证前后对称

print("str2 {0}".format(str2))

str3="""str3

str3

str3""" #使用三引号可以保留下格式来

print("str3 {0}".format(str3))

结果:

str0 str0 "str0" """str0"""str1 str1'str1' '''str1'''str2 str2"str2" 'str2'str2

str2

str3 str3

str3

str3

4. 转义符和换行符:

#encoding=utf-8

str='I\'m wms' #转义字符和别的语言差不多,都是用 \

print(str)

str="下面换行\n真换了" #换行符使用 \n

print(str)

结果:

I'm wms

下面换行

真换了

5. 自然字符串和字符串重复:

自然字符串字面意思理解就是将字符串保留本身的格式,而不受转义的影响。

字符串重复字面意思理解就是将字符串重复输出。

#encoding=utf-8

str=r'I\'m wms' #自然字符串输出,字符串前加上 r

print(str)

str="下面换行\n真换了" #非自然字符串输出就会解释转义字符

print(str)

str="重复输出,"*3 #重复输出3次

print(str)

结果:

下面换行

真换了

重复输出,重复输出,重复输出,

6. 子字符串:

索引运算符从0开始索引

切片运算符[x:y]是指从第x下标开始到第y-1下标

#encoding=utf-8

str='test index's1=str[0] #获取索引为0的子字符串

print("s1: {0}".format(s1))

s2=str[8] #如果索引超过字符串长度,则报错

print("s2: {0}".format(s2))

s3=str[:3] #冒号前的参数不填,表示索引从0开始到冒号后的x-1位

print("s3: {0}".format(s3))

s4=str[3:6] #索引从冒号前一位到后一位减一的子字符串

print("s4: {0}".format(s4))

结果:

s1: t

s2: e

s3: tes

s4: t i

7.  数据类型:

基本数据类型:基本数据类型就是之前我们讲到的数和字符串,这里就不介绍了。

列表:python里没有数组的概念,列表和数组的概念很接近。列表是用来存储一连串元素的容器,用[]表示。

元组:同样元组合数组的概念也很接近,用()表示。另外元组只能读取不能修改。

集合:

格式:set(元素),python的set是一个无序不重复元素集。

功能:

建立关系

消除重复元素

字典:Python中的字典也叫关联数组,用{}表示。例: dictionary={'name':'toutou',"age":"26","sex":"male"} ps:是不是觉得有点儿像json?

#encoding=utf-8#列表

person=["张三","王五","李四"] #大小在声明的时候就确定了

person[2]="lisi" #能改变已有索引处的值#person[3]="赵六" #该索引超出列表范围,报错

print(person[2])#元组

names=("张三","王五","李四")#names[2]="lisi" #元组不允许修改

print(names[0])#集合

x=set('12333的') #此处的字符串并不代表将字符串整个存入,而是将其全部拆分成一个一个的字符,并去除重复项,汉子按照编码拆分

x.add("456")

x.add("de")

x.add("的")#x.remove('44') #要移除的不存在,则报错

x.remove('de')

x.discard("dfd") #要移除的元素存在则移除,不存在也不报错

printx

y=set("3456")print "x:{0}".format(x)print "y:{0}".format(y)#交集

print "交集: {0}".format(x&y) #x&y = x.intersection(y) #两个集合中都存在的元素#并集

print "并集:{0}".format(x|y) #x|y = x.union(y) #将两个集合中的元素合并,去除重复项#差集

print "差集(x-y):{0}".format(x-y) #x-y = x.difference(y) #以"-"右边的集合为主,去除两个集合交集中的元素

print "差集(y-x):{0}".format(y-x)

x.pop()#随机删除一个元素

x.clear() #清空set集合#字典

dictionary = {"name":"wms",'age':23,'sex':"男"}print dictionary["name"]

dictionary["school"]='tianjin' #向字典中添加项目

print dictionary["age"]print dictionary["school"]

结果:

lisi

张三

set(['\x84', '\xe7', '\xe7\x9a\x84', '456', '1', '3', '2', '\x9a'])

x:set(['\x84', '\xe7', '\xe7\x9a\x84', '456', '1', '3', '2', '\x9a'])

y:set(['3', '5', '4', '6'])

交集: set(['3'])

并集:set(['\x84', '\xe7', '\xe7\x9a\x84', '456', '1', '3', '2', '5', '4', '6', '\x9a'])

差集(x-y):set(['\x84', '\xe7', '\xe7\x9a\x84', '456', '1', '2', '\x9a'])

差集(y-x):set(['5', '4', '6'])

wms23tianjin

8. 标识符:

在日常生活中,标示符是用来指定某个东西、人,要用到它,他或她的名字;在数学中解方程时,我们也常常用到这样或那样的变量名或函数名;在编程语言中,标识符是用户编程时使用的名字,对于变量、常量、函数、语句块也有名字;我们统统称之为标识符。

标识符命名规范:

必须只能是字母或下划线开头,不能是数字或者其他字符开头

除第一个开头字符外,其他部分可以是字母或者下划线或者数字

标识符大小写敏感,比如name和Name是不一样的标识符

特殊标识符:python中的关键字是指系统中自带的具备特定含义的标识符。常用的python关键字主要 有:and,elif,global,or,else,pass,break,continue,import,class,return,for,while... 常用的python关键字很多与其他语言类似的,我们在命名时应尽量避免与关键字重复。大家也不用担心怕不好区分,其实也很好区分,一般的IDE中关键字 是会显示出特定颜色的。

9.  对象:

Python对象类型:Pyhon的内置对象:数字、字符串、列表、元组、字典、集合等等,在Python中,一切都可以看做是对象。

Pickle模块:在Python中有时有一些对象需要持久性存储,并且不丢失这个对象的类型与数据,就需要将这些对象进行序列化,序列化之后需要使用时,再恢复为原来的数据。这种序列化的过程,就叫pickle(腌制)。

#encoding=utf-8#pickle 模块化(腌制)

importpickle#dumps(object) 序列化对象

x=["one","two","three"]

y=pickle.dumps(x)print "dumps(x) 序列化为:{0}".format(y)#loads(object) 反序列化

z=pickle.loads(y)print "loads(y) 反序列化为:{0}".format(z)#pickle.dump(object,file,True) 将对象序列化写入文件#此处的文件名字没有特殊要求,文件时存放在项目的根目录下的

wirteFile = file("test01.txt","wb") #这里的"wb","rb"也可以使用"w","r","wb"表示写二进制文件,"w"表示写文本

pickle.dump(x,wirteFile,True)

wirteFile.close()#关闭文件流#pickle.loads(object,file) 将dump存储在文件中的对象反序列化

readFile = file("test.txt","rb")

temp=pickle.load(readFile)print "从文件中读取的反序列化对象:{0}".format(temp)

readFile.close()

10. 行与缩进:

物理行与逻辑行:

物理行:实际中看到的行。python中一个物理行一般可以包含多个逻辑行,在一个物理行中编写多个逻辑行的时候,用分号隔开。一个逻辑行后面必 须有一个分号,注意,在实际程序中,如果一个逻辑行占了一个物理行的最后,这个逻辑行也可以省略分号。(省略规则:每个物理行默认自带一个分号,so,每 个物理行的最后一个逻辑行可以省略分号,故:当一个逻辑行占了一个物理行的时候即可省略分号。)

逻辑行:一段代码意义上的行数

行连接:行连接相关讲解参见代码讲解图。

缩进:在上面, 有朋友提到python语言是"靠缩进控制代码的语言"。的确如此,在python中,逻辑行的起始位置的空白是有语法规定的,如果空白不对,程序就会执 行出错。(这一点是和其他语言很大的一个不同点。)一般情况下(if/while..等等后面的逻辑行除外),单独的逻辑行起始位置不应该有空白。缩进的 方法有两种,可以按空格,也可以按tab键。(一般IDE会自动缩进。)关于缩进可能刚入门起来有点不适应或者不习惯,多试试就好了。

#encoding=utf-8#物理行与逻辑行#以下是2个物理行

print "物理行1" #每个物理行结尾默认带上一个分号";"

print "物理行2"

#以下是1个物理行,2个逻辑行

print "逻辑行1";print "逻辑行2" #此处连着写两个物理行,中间不加分号就报错#以下是1个逻辑航,2个物理行

print '''你说

我是

物理行还是逻辑行?''' #物理行使用三个引号,换行时不需要使用行连接符"\"#行连接

print "我是行连"\"接"

结果:

物理行1

物理行2

逻辑行1

逻辑行2

你说

我是

物理行还是逻辑行?

我是行连接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值