博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 基础语法
阅读量:5337 次
发布时间:2019-06-15

本文共 3489 字,大约阅读时间需要 11 分钟。

2017-06-24 09:50:14

一、变量

Python中的变量名的要求和C++基本一致

(1)只能以字母或者下划线作为开头,不能以数字开头

(2)标识符的其他部分可以有字母下滑线和数字组成,不允许有特殊字符出现如$等(c++中可以有$,且可以放在首位)

(3)不允许有空格,不允许有-分割

python 中只需要给变量赋值而不需要申明具体的数据类型,这是和c++有区别的地方

id(): 得到变量地址

eval(string s): 在内存中寻找 s这个变量名,有的话给出他的值

 

二、判断语句利用冒号和缩进完成

冒号必须要加上

if xxxx:

elif xxxx:

else xxxx:

#程序中出现中文会报错,需要加上coding=gbk

需要注意的是python中是没有switch case语句的

# coding=gbk# 出现了syntaxerror:non-utf-8 code 错误就是编码问题,需要加上 coding=gbkif name=="seu":    print("东南大学")else:    print("其他大学")name = input("请输入学校:")if name=="UCB":    print("加州伯克利")else:    print("其他大学")

 

三、循环语句

冒号必须要加上

1、while ...:

2、for...in:

for..in是另外一个循环语句,它在一序列的对象上逐一使用队列中的每个项目。else部分是可选的。如果包含else,它总是在for循环结束后执行一次,除非遇到break语句。

for i in range(1,5):    print(i)else:    print("循环结束")

range()生成一个序列,前开后闭,第三个参数是步长,默认值为1

 

四、运算符和表达式

与c++不同的地方:

1、乘法* 既可以表示两个数相乘,若是字符串乘以数字则是将字符串复制多次

2、幂运算** a**b,表示a的b次幂

3、与或非 用的是英文表示 and or not

4、python不支持++ ,--等自增,自减操作

优先级:

 

五、函数

def xxx(xxx,xxx):

使用def关键字进行函数的声明,形参中可以存在有缺省值的存在,值得注意的是,和c++一致只能在末尾的参数有缺省值

若要修改外部参数值,需要加上global关键字,告诉编译器这是外部参数。

关键参数技术:即直接使用参数名进行赋值操作,避免了参数顺序,参数个数的问题,显得更加方便

def fun(x,y=5,z=10):   print("x =",x,"y =",y,"z =",z)fun(3,z=1)

另外,可以使用return语句返回一个值,使用pass表示空语句

 

六、文档字符串

可以使用__doc__(注意双下划线)调用查看函数或者类中第一个未被赋值的字符串,一般用来解释函数的功能

def fun(x,y=5,z=10):   "这个函数的作用是输出三个数字。"   print("x =",x,"y =",y,"z =",z)print(fun.__doc__)

 

七、面向对象编程

基本语法:

class xxx:

  def fun(self):

    xxxx

(1)python中的类中元素在默认情况下都是public的,若要将某个数据声明成私有数据,则要在数据声明时在名字前加上两个下划线,形如:__privateval。

(2)public的数据不需要在函数外单独声明,只需要在__init__函数里加上就可以。

(3)函数外声明的数据属于整个类所有,类似于c++里的static静态成员数据,调用也是使用类名加上成员访问操作符

(4)类方法都必须加上self参数,这个和c++中的this指针是统一的,只不过必须要显示的表示出来

(5)__del__析构函数,在对象结束生命期的时候自动调用,也可以使用del 函数显示调用,必须要有self

(6)类初始化使用类名加上(),形如: p=xxx(xxx)

(7)析构函数一般不用写,因为python有自动回收机制,如果 自己写的话有一点需要注意的是,如果析构函数中修改了类的数据成员需要同过self.__class__.xxx来进行修改,否则会报错。简单的理解就是析构是针对当前对象的析构,所以需要通过self来进行调用与修改。更深层的理解是由于python回收机制的问题,由于回收的不可控性,如果只写一个del,则会导致出错。如果将所有的对象都显示调用析构函数,则也不会出错。不过这样显然得不偿失。

class Person:    population=0    def __init__(self,name):        self.name=name        Person.population+=1        def show(self):        print("目前的人口数是%d" %Person.population)    def __del__(self):        #写成Person.population-=1就会报错        self.__class__.population-=1        print("%s析构函数被执行了" %self.name)p1=Person("a")p2=Person("b")p1.show()del p1p2.show()

面向对象中的继承操作:

class Perdata:    def __init__(self,name,age):        self.name=name        self.age=age    def show(self):        print("姓名:%s 年龄:%d" %(self.name,self.age))class Tecdata(Perdata):    def __init__(self,name,age,salary):        #调用父类的初始化函数        Perdata.__init__(self,name,age)        self.salary=salary    def show(self):        #调用父类相应的函数        Perdata.show(self)        print("工资为%d" %self.salary)t=Tecdata("TIMHY",22,1)t.show()

 

七、文件输入输出

python中使用file类完成相关文件的输入和输出操作

常用的函数:

.open("路径",模式)

.read() .readline() 读文件

.write(xxx) 写文件

模式‘r’(缺省模式) 读;‘w’ 写(若源文件里已经有内容,则清空从头开始写);‘a’ 结尾添加

f=open("e:\\t.txt",'w')s='''hello worldhello worldhello world'''f.write(s)f.close()fin=open("e:/t.txt")line=fin.readline();while len(line)!=0:    #把结尾的换行符去掉,因为读取时已经将换行符读取到了    print(line,end='')    line=fin.readline()

 贴一段按行读取csv文件并输出的程序,比c++不知道高到哪里去了。

fin=open("C:/Users/YUAN/Desktop/ee.txt")fout=open("e:/ee.txt",'w')line=fin.readline().split(',');while len(line)==3:    s=line[1]+" "+line[2]    fout.writelines(s)    line=fin.readline().split(',');fin.close();fout.close();

 由于读取文件有风险,可能打不开,所以一般需要进行try-except语句进行控制。不过机制的Python提供了with open(...) as f:语句可以非常可靠的打开文件

转载于:https://www.cnblogs.com/TIMHY/p/7072911.html

你可能感兴趣的文章
五一 DAY 4
查看>>
(转)接口测试用例设计(详细干货)
查看>>
【译】SSH隧道:本地和远程端口转发
查看>>
win8.1安装Python提示缺失api-ms-win-crt-runtime-l1-1-0.dll问题
查看>>
图片点击轮播(三)-----2017-04-05
查看>>
判断两个字符串是否相等【JAVA】
查看>>
直播技术细节3
查看>>
《分布式服务架构:原理、设计于实战》总结
查看>>
java中new一个对象和对象=null有什么区别
查看>>
字母和数字键的键码值(keyCode)
查看>>
协议和代理
查看>>
IE8调用window.open导出EXCEL文件题目
查看>>
sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法(转)...
查看>>
[转]iOS学习笔记(2)--Xcode6.1创建仅xib文件无storyboard的hello world应用
查看>>
Spring mvc初学
查看>>
有意思的代码片段
查看>>
C8051开发环境
查看>>
VTKMY 3.3 VS 2010 Configuration 配置
查看>>
255. Verify Preorder Sequence in Binary Search Tree
查看>>
01_1_准备ibatis环境
查看>>