• python基础知识


    变量
    变量的作用:变量名,代指定变量值在内存某个地址保存的内容。
    1,声明变量
    语法:
    变量名 = 变量值
    #登录号两边的空格可有可无,依据个人喜好使用
    例子:
    >>> name = 'you name'
    >>> name
    'you name'
     
    >>> age = 28
    >>> age
    28
     
    变量的值为字符串时,必须使用引号(单引号,双引号都可以)。如果不使用引号,python会把变量值也当作一个变量名。
    >>> you = binges
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'binges' is not defined
     
    >>> you = 'binges'
    >>> name = you
    >>> name
    'binges'
     
    2,变量定义的规则:
    • 变量名只能是字母,数字和下划线的任意组合(例如:me_name,__name__,name3)
    • 变量的第一个字符不能是数字
    • 不能用关键字作为变量名(比如:as_integer_ratio', 'conjugate', 'fromhex', 'hex', 'imag', 'is_integer', 'real')
    • 变量名尽量简单易懂
     
     
     
     
     
    数据类型
    • 数字
    • 布尔值
    • 字符串
    • 列表
    • 元组
    • 字典
     
    1,数字
    数字又分为:INT(整型),LONG(长整型),FLOAT(浮点型)
     
    INT(整型):
    整型就是整数,不带小数点的数字。
    在32位机器上面,整数的取值范围为-2**31~2**31-1,即-2147483648~2147483647
    在64位机器上面,整数的取值范围为-2**63~2**63-1,即-92233720368547758089223372036854775807
    例子:
    >>> age = 25
    >>> type(age)
    <class 'int'>
     
    int(x) #转换x为整型
    >>> int(50.01)
    50
     
    FLOAT(浮点型):
    所谓浮点型就是带小数点的数字。
    例子:
    >>> age = 35.2
    >>> type(age)
    <class 'float'>
     
    >>> age = 35.0
    >>> type(age)
    <class 'float'>
    >>> age
    35.0
     
    float(x) #转换x为一个浮点数
    >>> float(50)
    50.0
     
    LONG(长整型)

    python可以处理非常大的整数:1000000000000000000L

    普通整数不能大于2 147 483 647 (也不能小于-2 147 483 648),如果需要大数,可以使用长整型长整型数书写方法和普通整数一样,但是结尾有个L
    例子:
    >>> 10**16
    10000000000000000L
     
     
    2,布尔值
    布尔值只有True(真,或者是数字1),False(假,或者是数字0)两种值,在python中,可以直接使用True,False
    例如
    >>> True
    True
    >>> False
    False
    >>> 2 > 3
    False
    >>> 2 < 3
    True
     
     
     
    3,字符串
    字符串格式化:
    例子:
    name = input("name:")
    age = int(input("age:"))
    job = input("job:")
    msg='''
    Infomation of %s:
    name:%s
    age:%s
    job:%s
    '''%(name,name,age,job)
    print(msg)

    print("Infomation of %s: name:%s age:%s job:%s" %(name,name,age,job))
    运行结果:
    name:binges
    age:28
    job:IT
     
    Infomation of binges:
        name:binges
        age:28
        job:IT
     
    Infomation of binges: 
    name:binges
    age:28
    job:IT
     
    这是两种字符串格式化的方法。
     
     
    4,列表

    创建列表
    sample_list = ['a',1,('a','b')]

    Python 列表操作
    sample_list = ['a','b',0,1,3]

    得到列表中的某一个值
    value_start = sample_list[0]
    end_value = sample_list[-1]

    删除列表的第一个值
    del sample_list[0]

    在列表中插入一个值
    sample_list[0:0] = ['sample value']

    得到列表的长度
    list_length = len(sample_list)

    列表遍历
    for element in sample_list:
        print(element)
        
    Python 列表高级操作/技巧

    产生一个数值递增列表
    num_inc_list = range(30)
    #will return a list [0,1,2,...,29]

     
    list的方法
    L.append(var)   #追加元素
    L.insert(index,var)
    L.pop(var)      #返回最后一个元素,并从list中删除之
    L.remove(var)   #删除第一次出现的该元素
    L.count(var)    #该元素在列表中出现的个数
    L.index(var)    #该元素的位置,无则抛异常 
    L.extend(list)  #追加list,即合并list到L上
    L.sort()        #排序
    L.reverse()     #倒序
    list 操作符:,+,*,关键字del
    a[1:]       #片段操作符,用于子list的提取
    [1,2]+[3,4] #为[1,2,3,4]。同extend()
    [2]*4       #为[2,2,2,2]
    del L[1]    #删除指定下标的元素
    del L[1:3]  #删除指定下标范围的元素
    list的复制
    L1 = L      #L1为L的别名,用C来说就是指针地址相同,对L1操作即对L操作。函数参数就是这样传递的
    L1 = L[:]   #L1为L的克隆,即另一个拷贝。
     
     
     
     
     
     
     
    5,元组
    元组是不可变的。元组使用小括号。
    >>> i = (1,2,4,5)
    >>> print(i)
    (1, 2, 4, 5)
    元组的操作:
    Python 表达式结果描述
    len((1, 2, 3)) 3 长度
    (1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 串联
    ('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 重复
    3 in (1, 2, 3) True 成员
    for x in (1, 2, 3): print x, 1 2 3 迭代
     
     
     
    6,字典

    dictionary: 字典
    dict = {'ob1':'computer', 'ob2':'mouse', 'ob3':'printer'}
    每一个元素是pair,包含key、value两部分。key是Integer或string类型,value 是任意类型。
    键是唯一的,字典只认最后一个赋的键值。

    dictionary的方法
    D.get(key, 0)       #同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常
    D.has_key(key)      #有该键返回TRUE,否则FALSE
    D.keys()            #返回字典键的列表

    D.update(dict2)     #增加合并字典
    D.popitem()         #得到一个pair,并从字典中删除它。已空则抛异常
    D.clear()           #清空字典,同del dict
    D.copy()            #拷贝字典
    D.cmp(dict1,dict2)  #比较字典,(优先级为元素个数、键大小、键值大小)
                        #第一个大返回1,小返回-1,一样返回0
                
    dictionary的复制
    dict1 = dict        #别名
    dict2=dict.copy()   #克隆,即另一个拷贝。

    3、tuple:元组(即常量数组)
    tuple = ('a', 'b', 'c', 'd', 'e')
    可以用list的 [],:操作符提取元素。就是不能直接修改元素。

    4、string:     字符串(即不能修改的字符list)
    str = "Hello My friend"
    字符串是一个整 体。如果你想直接修改字符串的某一部分,是不可能的。但我们能够读出字符串的某一部分。
    子字符串的提取
    str[:6]
    字符串包含 判断操作符:in,not in
    "He" in str
    "she" not in str

    string模块,还提供了很多方法,如
    S.find(substring, [start [,end]]) #可指范围查找子串,返回索引值,否则返回-1
    S.rfind(substring,[start [,end]]) #反向查找
    S.index(substring,[start [,end]]) #同find,只是找不到产生ValueError异常
    S.rindex(substring,[start [,end]])#同上反向查找
    S.count(substring,[start [,end]]) #返回找到子串的个数

    S.lowercase()
    S.capitalize()      #首字母大写
    S.lower()           #转小写
    S.upper()           #转大写
    S.swapcase()        #大小写互换

    S.split(str, ' ')   #将string转list,以空格切分
    S.join(list, ' ')   #将list转string,以空格连接

    处理字符串的内置函数
    len(str)                #串长度
    cmp("my friend", str)   #字符串比较。第一个大,返回1
    max('abcxyz')           #寻找字符串中最大的字符
    min('abcxyz')           #寻找字符串中最小的字符

    string的转换
                
    oat(str) #变成浮点数,float("1e-1")  结果为0.1
    int(str)        #变成整型,  int("12")  结果为12
    int(str,base)   #变成base进制整型数,int("11",2) 结果为2
    long(str)       #变成长整型,
    long(str,base)  #变成base进制长整型,

    字符串的格式化(注意其转义字符,大多如C语言的,略)
    str_format % (参数列表) �#参数列表是以tuple的形式定义的,即不可运行中改变
    >>>print ""%s's height is %dcm" % ("My brother", 180)
              #结果显示为 My brother's height is 180cm

    list 和 tuple 的相互转化

    tuple(ls) 
    list(ls)



     
     
     
     
     
     
    用户交互
    input()
     
    >>> name = input("请输入你的姓名:")
    请输入你的姓名:binges
    >>> name
    'binges'
    >>> name = input("请输入你的姓名:")
    请输入你的姓名:宾格斯
    >>> name
    '宾格斯'
    #这里可以直接写中文,不用考虑字符编码的问题,3.x版本就是这么神奇
     
    注意3.X版本把input()的所有内容都当作字符串类型
    >>> age = input("请输入你的年龄:")
    请输入你的年龄:28
    >>> age
    '28'
    >>> type(age)    #查看变量age值的类型
    <class 'str'>
     
     
    如果想让输入的数字当作整数处理
     
    >>> age = int(input("请输入你的年领:"))
    请输入你的年领:28
    >>> age
    28
    >>> type(age)
    <class 'int'>
     
     
     
     
     
     
     
     
     
     
     
     
    条件语句和缩进
    python对缩进的要求非常严格,同级代码缩进必须一致,一般缩进为4个空格或一个teb键,根据个人喜欢使用。
    条件语句:
    根据输入不同执行不同的代码
    语法:
    if 条件1:
        符合条件1执行这些代码
    elif 条件2:
        符合条件2执行这些代码
    else:
        上面都不符合执行这些代码
     
    例子:
    luchk_number = 28
    int_put = int(input("请输入数字:"))
    if int_put == luchk_number:
    print("你猜对了 ")
    elif int_put > luchk_number:
    print("你猜大了 ")
    else:
    print("你猜小了 ")
    执行结果:
    请输入数字:27
    你猜小了 
    请输入数字:35
    你猜大了 
    请输入数字:28
    你猜对了 
     
     
     
     
     
    运算符
    • 算术运算符
    • 比较运算符
    • 赋值运算符
     
     
    1,算术运算符
    下面假设变量a为2,变量b为5
    运算符
    描述
    实例
    +
    加:两个对象相加 a + b 结果为 7
    -
    减:前面的数减掉后面的数
    a - b 结果为 -3
    *
    乘:两个数的相乘的结果
    a * b 结果为 10
    /
    除:前面的数除以后面的数的商
    b / a 结果为 2.5
    %
    取模:前面的数除以后面的数的余数
    b % a 结果为 1
    **
    幂:前面数的多少次方
    a ** b 结果为 32
    //
    取整除:前面的数除以后面的数的商的整数部分
    b // a 结果为 2
     
    2,比较运算符
    下面假设变量a为2,变量b为5
    所有比较运算符返回1(True)表示真,返回2(False)表示假
     
    运算符
    描述
    实例
    == 等于:比较对象是否相等
    (a==b)返回False
    !=
    不等于:比较两个对象是否不相等
    (a!=b)返回True
    >
    大于:返回x是否大于y
    (a>b)返回False
    <
    小于:返回x是否小于y
    (a<b)返回True
    >=
    大于等于:返回x是否大于等于y
    (a>=b)返回False
    <=
    小于等于:返回x是否小于等于y
    (a<=b)返回True
     
     
    3,赋值运算符
    运算符
    描述
    实例
    =
    简单的赋值运算符 c=a+b将a加bdeepin运算结果赋值为c
    +=
    加法赋值运算符
    c+=a等效于c=c+a
    -=
    减法赋值运算符
    c-=a等效于c=c-a
    *=
    乘法赋值运算符
    c*=a等效于c=c*a
    /=
    除法赋值运算符
    c/=a等效于c=c/a
    %=
    取模赋值运算符
    c%=a等效于c=c%a
    **=
    幂赋值运算符
    c**=a等效于c=c**a
    //=
    取整除赋值运算符
    c//=a等效于c=c//a
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    位运算符:
    是把两个数字转化为二进制数进行计算
    运算符
    描述
    &
    按位与运算:一个为假即为假
    |
    按位或运算:一个为真即为真
    ^
    按位异或运算:真真为假,假假为假,真假为真
    ~
    按位取反:两个数相加的结果为 -1
    <<
    左移运算:向左移动x位,等同于乘以2的x次方
    >>
    右移运算:向右移动x位,等同于除于2的x次方
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    例子:
    >>> a = 50
    >>> b = 60
    >>> a & b
    48
    >>> a | b
    62
    >>> a ^ b
    14
    >>> ~a
    -51
    >>> a<<2
    200
    >>> a>>2
    12
     
     
     
    逻辑运算符
    运算符
    描述
    实例
    and
    布尔值“与”,两个都为真才是真
    (a and b)为True
    or
    布尔值“或”,一个为真即为真
    (a or b)为True
    not
    如果条件为真,则逻辑非运算符为假 not(a and b)为False
     
     
     

    • 关系运算符
    in 包含
    not in 包含
    例子:
    >>> list = [1,2,3,4,5]
    >>> i = 3
    >>> y = 6
    >>> if i in list:
    ...     print('in')
    ...
    in
    >>> if y not in list:
    ...     print('not in')
    ...
    not in
     
     
    • 验证运算符
    is 和 is not
    验证运算符,是判断两个对象是否为不同类型,如果两个对象是同类型则为True。
    例子:
    >>> a = 4
    >>> b = 4
    >>> a is b
    True
    >>> a is not  b
    False
     
    运算符的优先级:
    运算符描述
    lambda Lambda表达式
    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,...' 字符串转换
     
     
     
    字符编码:

    1. 字符编码简介

    1.1. ASCII

    ASCII(American Standard Code for Information Interchange),是一种单字节的编码。计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号。不过ASCII只用到了其中的一半(x80以下),这也是MBCS得以实现的基础。

    1.2. MBCS

    然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求。后来每个语言就制定了一套自己的编码,由于单字节能表示的字符太少,而且同时也需要与ASCII编码保持兼容,所以这些编码纷纷使用了多字节来表示字符,如GBxxx、BIGxxx等等,他们的规则是,如果第一个字节是x80以下,则仍然表示ASCII字符;而如果是x80以上,则跟下一个字节一起(共两个字节)表示一个字符,然后跳过下一个字节,继续往下判断。

    这里,IBM发明了一个叫Code Page的概念,将这些编码都收入囊中并分配页码,GBK是第936页,也就是CP936。所以,也可以使用CP936表示GBK。

    MBCS(Multi-Byte Character Set)是这些编码的统称。目前为止大家都是用了双字节,所以有时候也叫做DBCS(Double-Byte Character Set)。必须明确的是,MBCS并不是某一种特定的编码,Windows里根据你设定的区域不同,MBCS指代不同的编码,而Linux里无法使用MBCS作为编码。在Windows中你看不到MBCS这几个字符,因为微软为了更加洋气,使用了ANSI来吓唬人,记事本的另存为对话框里编码ANSI就是MBCS。同时,在简体中文Windows默认的区域设定里,指代GBK。

    1.3. Unicode

    后来,有人开始觉得太多编码导致世界变得过于复杂了,让人脑袋疼,于是大家坐在一起拍脑袋想出来一个方法:所有语言的字符都用同一种字符集来表示,这就是Unicode。

    最初的Unicode标准UCS-2使用两个字节表示一个字符,所以你常常可以听到Unicode使用两个字节表示一个字符的说法。但过了不久有人觉得256*256太少了,还是不够用,于是出现了UCS-4标准,它使用4个字节表示一个字符,不过我们用的最多的仍然是UCS-2。

    UCS(Unicode Character Set)还仅仅是字符对应码位的一张表而已,比如”汉”这个字的码位是6C49。字符具体如何传输和储存则是由UTF(UCS Transformation Format)来负责。

    一开始这事很简单,直接使用UCS的码位来保存,这就是UTF-16,比如,”汉”直接使用x6Cx49保存(UTF-16-BE),或是倒过来使用x49x6C保存(UTF-16-LE)。但用着用着美国人觉得自己吃了大亏,以前英文字母只需要一个字节就能保存了,现在大锅饭一吃变成了两个字节,空间消耗大了一倍……于是UTF-8横空出世。

    UTF-8是一种很别扭的编码,具体表现在他是变长的,并且兼容ASCII,ASCII字符使用1字节表示。然而这里省了的必定是从别的地方抠出来的,你肯定也听说过UTF-8里中文字符使用3个字节来保存吧?4个字节保存的字符更是在泪奔……(具体UCS-2是怎么变成UTF-8的请自行搜索)

    另外值得一提的是BOM(Byte Order Mark)。我们在储存文件时,文件使用的编码并没有保存,打开时则需要我们记住原先保存时使用的编码并使用这个编码打开,这样一来就产生了许多麻烦。(你可能想说记事本打开文件时并没有让选编码?不妨先打开记事本再使用文件 -> 打开看看)而UTF则引入了BOM来表示自身编码,如果一开始读入的几个字节是其中之一,则代表接下来要读取的文字使用的编码是相应的编码:

    BOM_UTF8 ‘xefxbbxbf’
    BOM_UTF16_LE ‘xffxfe’
    BOM_UTF16_BE ‘xfexff’

    并不是所有的编辑器都会写入BOM,但即使没有BOM,Unicode还是可以读取的,只是像MBCS的编码一样,需要另行指定具体的编码,否则解码将会失败。

     
    以上内容摘自网络。
     
     
    循环
    for循环:
    >>> for i in range(4):
    ...     print(i)
    ...
    0
    1
    2
    3
    执行的语句多次的顺序
     
    while循环:
    >>> n = 0
    >>> while n < 4 :
    ...     print(n)
    ...     n += 1
    ...
    0
    1
    2
    3
     
     
     
     
     
    文件操作
    f = open('/home/test.txt' ,'r')        以读的模式打开文件
    f.close()                            关闭文件
    readline()                            以行模式读取
     
     

    关于open 模式:

    w     以写方式打开,
    a     以追加模式打开 (如果文件不存在则创建新文件)
    r     以读写模式打开

    w+    以写模式打开

    a+    以追加和读的模式打开
    r+    以读写模式打开,和追加的效果是一样的,但是如果文件不存在,则会报错
    rb/wb/ab     以二进制读模式打开,如果需要跨平台,一定要加上b

     

    文件其他方法:

    f.moed    显示文件打开格式

    f.flush()    把缓冲区的数据刷到硬盘

    f.read()    把文件一次性读入内存

    f.readline()    读一行内容

    f.readlines() 把文件都读入内存,并且每行转成列表中的一个元素

    f.tell()    显示程序光标所在该文件中的当前的位置

    f.seek()    f.truncate(10)从文件开头截取10个字符,超出的都删除

    f.writelines()    参数需要为一个列表,将一个列表中的每个元素都写入文件

    f.xreadlinses()    以迭代的模式循环文件,在处理大文件时效率极高,只记录文件开头和结尾,每次循环一次,只读取一行。

     
    小弟初学python,把自己的理解写为博客,所以博客内容仅供参考。 python之路使用python 3.X版本。 更多内容请关注:http://www.cnblogs.com/binges/
  • 相关阅读:
    python——(os, shutil)
    python-(subprocess, commands)
    PHP设计模式二:单例模式
    PHP设计模式一:工厂方法设计模式
    PHP垃圾回收机制
    PHP异常处理机制
    超文本传送协议HTTP
    IP地址
    Linux系统网络基本配置
    Linux系统LVM基本使用
  • 原文地址:https://www.cnblogs.com/binges/p/5095810.html
Copyright © 2020-2023  润新知