美文网首页
Python基础语法

Python基础语法

作者: ux2017 | 来源:发表于2017-10-22 22:28 被阅读94次
    ##-*- coding: utf-8 -*- #如果不加上这一行,文件中就不能包含中文
    
    
    #---------------------------------------------------------------------#
    ##python编写规范
    #不要混合使用制表符和空格,尽量都用制表符,但是要设置编辑器将制表符当做四个空格
    #行长不要超过80个字符,注释的行长不超过72个字符
    #给形参指定默认值时,以及使用关键字实参时,等号两边不要有空格
    #定义函数时若形参太多需要换行,需要缩进两个制表位以跟函数体的缩进区分
    #类的命名不使用下划线,而是首字母大写;实例名和模块名全部小写,并在单词之间用下划线
    #每个模块、类都应该包含文档字符串
    #---------------------------------------------------------------------#
    
    
    print("hello,world")
    
    #可以使用字母、数字或下划线作为变量名或函数名,但不能以数字为首
    
    
    
    #----------------------------------------#
    #---------------string-------------------#
    #----------------------------------------#
    
    #字符串可以用单引号或者双引号括起,这种灵活性允许了在字符串中包含单引号或者双引号
    string1="you're late"
    string2='He said:"Don\'t go out."'
    print(string1)
    print(string2)
    #更改大小写
    name="cyan zheng"
    print(name.title())
    print(name.upper())
    print(name.lower())
    #合并字符串
    print(name.title()+", "+string1+"|")
    string1+='add something'
    #按空格分割单词
    string1.split() #split会将结果储存在一个列表中
    #添加空白(包括空格、制表符和换行符)
    print("\ttab")
    print("a row\nanother row")
    #删除字符串的空白
    string_with_space="    string with space    "
    print(string_with_space.rstrip())   #删掉末尾的空白
    print(string_with_space.lstrip())   #删掉开头的空白
    print(string_with_space.strip())    #删掉两端的空白
    
    
    
    #----------------------------------------#
    #---------------number-------------------#
    #----------------------------------------#
    3**3    #3的三次方
    0.2+0.2     #小数通常称为浮点数,由于计算机的处理方式,对小数的运算常常会出现不同的小数位数
    
    age=23
    #message="happy "+age+"rd birthday"     这个语句会报错,因为age的类型是数字,需要将其转换为字符串才能放在字符串中
    message="happy "+str(age)+"rd birthday"
    age='23'
    age=int(age)    #将以字符串存储的数字转换为数字格式
    if age%2==0:    #判断一个数字是否偶数
        print("Age is even")
    
    #----------------------------------------#
    #---------------list---------------------#
    #----------------------------------------#
    #定义列表
    alist=['this',' is',' a',' list',23]
    emptylist=[]
    #访问列表
    print(alist)    #这会输出包括方括号在内的内容
    print(alist[0])     #这会输出alist的第一个元素this
    print(alist[3].upper())     #对列表中类型为字符串的元素,可以使用字符串自带的方法
    print(alist[-1])    #索引从0开始;-1表示最后一个元素,-2表示倒数第二个,以此类推
    len(alist)      #返回列表的长度
    #增删改列表
    alist[0]='change'   #修改列表元素
    alist.append('append')  #在列表末尾添加元素  #str添加元素的话用+=就行
    alist.insert(0,'insert')    #在第0个位置插入元素,其后的元素都会后移一个位置
    del alist[0]    #删除alist的第0个元素
    popped_alist=alist.pop()        #方法pop会删除alist的最后一个元素,然后返回这个元素值;注意上面的append和insert都是没有返回值的
    popped_alist2=alist.pop(1)      #pop也可以输出参数,删除和返回特定索引的值,不输入时,就默认是最后一个元素
    alist.remove('append')      #如果只知道要删除的元素值而不知道索引时,可使用remove方法;remove只能删除第一个满足条件的值,如果要删除多个需要使用循环
    #修改列表排序
    alist.sort()        #将列表中的元素按照字母顺序排序,不允许列表中有数字
    alist.sort(reverse=True)    #将列表元素按字母倒序排序
    sorted_alist=sorted(alist)  #sorted函数返回排序后的列表,但不会改变原列表的排序
    rsorted_alist=sorted(alist,reverse=True)
    alist.reverse()     #直接按照相反的顺序排列
    ##列表for循环
    for element in alist:   #每次循环都将alist中的一个元素赋值给element然后执行循环体,记得有冒号
        print(element)      #python通过缩进识别代码行之间的关系,因此一定要注意缩进 #记得在终端写for循环时,是需要自己打缩进的
    ##数值列表
    #创建数字列表
    numlist=list(range(1,5))    #生成的列表是1234,range函数不会包含第二个参数
    numlist2=list(range(1,10,2))    #range的第三个参数是公差
    #示例:创建一个数字列表,包含1:10的平方
    squares=[]
    for value in range(1,11):
        square=value**2
        squares.append(square)
    #同一个例子的列表解析写法
    squares=[value**2 for value in range(1,11)]
    #描述性统计
    min(numlist)
    max(numlist)
    sum(numlist)
    #切片(访问列表的部分元素)
    numlist[0:3]    #将返回numlist的第0、1、2个元素,第二个索引一般不会被返回
    numlist[:3]     #省略起始索引,默认从第0个开始
    numlist[1:]     #省略终止索引,默认到最后一个
    numlist[-3:]    #返回最后三个元素
    #复制列表
    copylist=numlist[:]     #这会复制numlist的当前值到copylist
    copylist2=numlist   #不使用方括号的话,copylist和numlist会联动,实际指向同一个列表
    ##元组dimension,即不可变的列表
    dimensions=(2,3)    #元组使用圆括号
    #dimensions[0]=30   #给元组中的元素赋值会报错
    dimensions=(2,30)   #但是可以给元组重新赋值
    
    
    
    ##----------------------------------------#
    ##---------------if-----------------------#
    ##----------------------------------------#
    #示例
    for num in numlist:
        if num==1:      #一个等号是赋值,两个等号是判断
            num=num+1
        else:
            num=num+2
        if num!=1:      #!=不等于
            num=num-1
    #条件判断中可以包含:< > <= >= 等数学符号
    if num[1]==1 and num[2]==2:
        And=num[1]+num[2]
    if num[1]==1 or num[2]==2:  #用括号增强可读性if (num[1]==1) or (num[2]==2)
        Or=num[1]-num[2]
    'hello' in numlist  #in用来判断一个元素是否在列表中
    'hello' not in numlist  #not in是否不再列表中
    if num[1]==1:
        a=1
    elif num[1]==2:
        a=2
    else:       #可以只有if和elif,不一定要有else
        a=3
    #检查列表是不是空的
    emptylist=[]
    if emptylist:   #当列表不是空的时返回True
        a=emptylist[0]
    
    
    ##----------------------------------------#
    ##---------------dictionary---------------#
    ##----------------------------------------#
    dic={'color':'green','size':5}  #dictionary通过花括号定义,由key-value对组成
    dic['color']    #通过key访问value
    #字典的值可以是任意对象
    dic['x']=1  #增加key-value对
    #键值对的排列顺序没有意义
    del dic['color']
    #遍历键值对
    for key,value in dic.items():   #方法items返回的是一个键值对列表
        print(key)
        print(value)
    for key in dic.keys():  #等同于for key in dic:
        print(key)
    for value in dic.values():  #去重:for value in set(dic.values())#set类似于string,但是其中的元素是去重的
        print(value)
    #嵌套:把字典存储在列表中,或把列表存储在字典中
    dic_1={'color':'green','size':5}
    dic_2={'color':'green','size':5}
    dic_3={'color':'green','size':5}
    dics=[dic_1,dic_2,dic_3]
    diclist={'color':'green','size':[2,3,4]}
    
    ##获取用户输入
    message=input("Please input somthing: ")
    print(message)
    
    
    
    
    ##----------------------------------------#
    ##---------------while--------------------#
    ##----------------------------------------#
    a=1
    while a<=5:
        print(str(a))
        a+=1
    #可以用break退出循环
    #可以用continue跳过某些情况的循环,在循环中的if...continue语句会检查是否满足if的条件,若满足则会跳过continue后面的所有语句开始下一个循环
    #for循环不太适合修改列表或字典,如果需要修改,请使用while循环
    alist=['a','b','c']
    while alist:    #循环直到alist变成空列表
        a=alist.pop()
    
    
    ##----------------------------------------#
    ##---------------function-----------------#
    ##----------------------------------------#
    #定义函数
    a='var'
    def func1(b):
    #   """这是函数的文档字符串docstring"""
        print("this is what a function do with "+b)
    #调用函数
    func1(a)    #b是形参,a是实参
    #位置实参:提供实参时,按照定义函数时的形参顺序
    #关键字实参:不需要按照顺序,但是需要指定实参对应的形参,如exmfunc(vara='haha',varb='dddd')
    #给形参提供默认值,在定义函数时输入:exmfunc(vara,varb='dog'),则后面调用时可以不用输入varb。有默认值的形参需要放在形参的末尾
    #返回值
    def exmfunc(vara,varb='dog'):
        output=vara+varb
        return ouput
        #return None    #返回空值
    a=exmfunc('hello, ')
    #通过类似func(alist[:])的形式向函数传递列表的副本,避免函数运行过程中更改原列表
    #允许传递任意数量的实参
    def exmfunc(*dims): #加上*后,函数会将输入的实参(不管是1个还是多个)都封装到一个叫做dims的元组(即不可修改的列表)中,这样在调用时,不管输入几个参数都可以
        for dim in dims:
            print("/n"+dim)
    #def exmfunc(a,b,c,*dims)   #如果任意数量的形参不是唯一一个形参,那么需要将它放在形参的最后
    #def exmfunc(a,b,c,**dics)  #调用exmfunc(a,b,c,d='d',e='e')   
    #调用时可以输入多个键值对作为实参,这些键值对在函数体中会被当做一个dictionary
    
    
    ##----------------------------------------#
    ##---------------模块---------------------#
    ##----------------------------------------#
    #将函数存储在模块中,需要时通过import调用。允许函数在不同程序中被调用,同时简化程序
    #只需要将函数储存为py文件即可,导入后程序即可使用该文件中定义的所有函数
    import modulefunc
    modulefunc.func(vara,varb)#通过模块名.函数名来调用模块中的函数
    
    from modulefunc import func1 as a, func2 as b
    a(vara) #使用from...import的形式导入函数,则不需要在调用时指定模块名,不管是否指定了别名
    
    from modulefunc import *
    #import*表示导入模块中的所有函数,这种形式导入的函数也不需要在调用时指定模块名
    
    
    ##----------------------------------------#
    ##---------------类-----------------------#
    ##----------------------------------------#
    #类可以用来定义一些对象的通用行为与特有属性。
    class Dog():    #首字母大写的默认为类
        def __init__(self,name,age):
            #类中的函数称为方法,__init__是一个默认方法,每当从类中创建实例时都会自动调用
            #每个方法都需要self形参,指代创建的实例
            self.name=name  #将形参name的值赋给self的属性name(可以通过实例访问的变量称为属性)
            self.age=age
            self.health=10  #为health提供默认值,则不需要在init中有对应的形参
        def sit(self):
            print(self.name.title() + " is sitting.")
    #在python2.7中,创建类时需要在括号中加入object:class Dog(object):
    
    #创建实例
    dog1=Dog('Wang',2)
    #创建后,dog1变量就自动具备了name和age属性,以及sit方法
    dog1.name
    dog1.sit()
    
    ##修改属性的值
    #1.直接修改
    dog1.health=8
    
    #2.使用方法修改
    #在类中定义方法:
        def update(self,h):
            self.health=h
    #调用方法进行修改:
    dog1.update(8)
    #方法2的好处是可以设定一些逻辑,如不允许新设定的值高于之前的值等,还可以直接在原来
        #的值的基础上增减,而不是直接赋一个新的值
    
    ##继承类
    #继承一个类时,将会自动获得该类的所有属性和方法,并且与原先的类成为父类和子类的关系
    class Doggy(Dog):   #父类必须在当前文件中
        def __init__(self,name,age):
            super().__init__(name,age)  #关联父类和子类,使子类拥有父类的所有属性
            #super(Doggy,self).__init__(name,age)   #在python2.7中需要两个实参
            self.color="white"  #定义子类特有的属性
            #继续在下方定义新的函数即可为子类新增方法,如果父类的某些方法不适用,可以在子类中定义一个同名的方法进行覆盖
            self.kind=Kind()    #类的属性和方法过多时,可以将其中一部分存储为另一个类,并在原先的类中创建此类的实例
    #dog1.kind.func()   #类dog1的属性kind是一个类的实例,此行代码可访问kind实例中的func方法
    
    ##导入类
    from module_name import calss_name1,class_name2,class_name3
    import module_name  #导入整个模块
    from module_name import *   #导入模块中的所有类(不推荐)
    
    ##python标准库
    #python标准库是一组模块,默认安装在python中,其中的函数和类都可以使用。
    #比如collections模块中的OrderedDict类,允许创建有序字典
    from collections import OrderedDict
    case = OrderedDict()
    #pymotw.com可以了解python标准库
    
    ##----------------------------------------#
    ##---------------文件读写------------------#
    ##----------------------------------------#
    ##读取文件
    with open('xxx.txt') as openfile:   #with表示当不需要访问文件时会将其关闭
    #相对文件路径:'sub_folder\filename.txt'   #OS X和Linus系统使用斜杠/而不是反斜杠
    #绝对文件路径:'C:\Users\folder\subfolder\filename.txt'
        a=openfile.read()   #read返回的字符串会多出一个空行
        line=[]
        for a in openfile:  #逐行访问openfile
            line.append(a)
        line=openfile.readlines()   #逐行读取openfile并存储在列表中
    ##写入文件
    with open('xxx.txt','w') as fileobject: 
    #加入参数'w'表示写入模式;r表示读取模式(默认),a表示附加模式,r+表示读写模式
        fileobject.write("write this in the file")
    #只能写入字符串;可以用多条以上语句写入多行
    #若使用的是附加模式,则源文件的内容不会被清空;写入模式和读写模式都会在返回文件对象前清空文件
    
    
    ##----------------------------------------#
    ##-----------------异常--------------------#
    ##----------------------------------------#
    #当python运行过程中出现错误时,python会创建一个被称为异常的特殊对象,如果没有对这种异常
    #进行特殊处理,程序就会终止并显示一个traceback
    #使用try-except对异常进行处理:
    try:
        print(5/0)
    except ZeroDivisionError:
        print("Do not divide by zero! ")    #如果发现ZeroDivisionError则运行这行代码
        #pass   #如果不需要做出什么反应,可以在except代码块中使用pass语句
    else:
        print("Successful") #如果未发现ZeroDivisionError则会运行这行代码
    #其他异常:FileNotFoundError
    
    
    ##----------------------------------------#
    ##-----------------存储数据----------------#
    ##----------------------------------------#
    #json(JavaScript Object Notation) 可以将信息存储在文件中,可以在python程序之间甚至其他语言的程序之间分享数据
    import json
    with open('xxx.json','w') as f:
        json.dump([2,3,4],f)    #json.dump将[2,3,4]写入到f代表的文件xxx.json中
        #写入json的文件扩展名一般为json
    with open('xxx.json','r') as f:
        numbers=json.load(f)    #json.load将在f中的信息储存到numbers中
    
    
    

    相关文章

      网友评论

          本文标题:Python基础语法

          本文链接:https://www.haomeiwen.com/subject/afnnuxtx.html