zoukankan      html  css  js  c++  java
  • python基础

    相关概念

    是组织一系列相关类和接口的一个命名空间。从概念上理解,可以将包理解成与计算机上不同的文件夹相似。

    运算

    使用两个*表示乘方运算。

    >>> 3**29
    

    拼接

    str将非字符串转成字符串。

    age = 23
    message = "Happy " + str(age) + "rd Birthday!"
    print(message)
    

    数据结构

    list(列表)

    如:

    bicycle = ['mobike','永久','小黄车','blue'];
    

    curd

    • 取最后一个元素

    bicycle[-1]

    • 列表末尾添加新元素

    bicycle.append('999')

    • 插入元素

    bicycle.insert(0,'哈啰单车'); //0 代表列表索引

    • del删除元素【知道其索引】

    del bicycle[0]

    • pop删除元素

    移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

    list.pop([index=-1])

    obj -- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值。

    append和pop结合可以做栈,遵循LIFO

    • remove根据值删除元素

    bicycle.remove('mobike')

    注意:remove()只删除第一个指定的值。如果需要删除所有,需要自己循环判断。

    • 切片

    创建切片,指定要使用的第一个元素和最后一个元素的索引。

    print(bicycle[0:3])
    
    print(bicycle[:3])  # 未指定第一个元素,默认0
    
    print(bicycle[0:])  # 未指定做后一个元素,默认终止索引
    
    print(bicycle[:])
    

    遍历切片

    for value in bucycle[0:2]:
        print(value.title)
    

    复制列表

    list = bicycle[:]
    

    sort

    • sort()方法对列表排序【按ASCII码排序】,永久性的修改列表的排列顺序。

    sort(bicycle)

    • sorted()对列表进行临时排序

    new_bicycle = sorted(bicycle) //new_bicycle和bicycle结果不一样

    reverse

    反转列表元素的排列顺序,永久性修改列表顺序。

    bicycle.reverse()

    len 长度

    len(bicycle) 获取列表长度。

    in 检查特定值是否在列表中

    'blue' in bicycle   # True
    

    反之 not in

    元祖

    Python将不能修改的值称为不可变的,而不可变的列表称为元祖。

    元祖看起来跟列表差不多,但使用圆括号标识。可以像列表一样去查询获取元素。

    list = (1,2,3,4,5)
    print(list[0])
    

    元素不可修改,但可以修改元祖变量。

    list = (1,2,3)
    list = (3,4,5)
    

    字典

    字典是一系列键值对。使用键可以访问值。

    alien = {'color':'green','points':5}
    print(alien['color'])
    

    字典是一种动态结构,可随时添加键值对。

    alien['x_position']=0
    alien['y_position']=1
    

    创建空字典:alien = {}

    删除键值对:

    del alien['points']
    

    遍历字典 for k,v in list.items():

    for key,val in alien.items():
        print('key:'+key+'
    ')
        print('value:'+val)    
    

    keys()获取字典所有键

    for key in alien.keys():
        print(key.title)
    

    按顺序遍历字典中所有键

    for key in sorted(alien.keys()):
        print(key.title)
    

    values() 获取字典所有值

    字典列表

    字典作为列表的元素

    list = [ alien0, alien1, alien2 ]
    

    除此之外,字典可嵌套字典。

    逻辑表达式

    • if
    if condition:
        do something
    elif condition:
        do something
    else
        do something
    

    condition结果bool型 True False

    检查是否相等区分大小写,如果不区分大小写。可以:

    car = 'Audi'
    car.lower() == 'audi'
    

    and 检查多个条件,全部需命中

    or 检查多个条件,一个命中

    • while

    不断的运行,直到条件不满足为止

    break 退出循环

    continue 跳过本次操作

    在遍历列表的同时取修改数据,使用while更方便。

    如:删除包含特定值的所有列表元素

    perts = ['dog','cat',dog','goldfish','cat','rabbit','cat']
    print(perts)
    while 'cat' in perts:
        perts.remove('cat')
    print(perts)
    

    如:用户输入来填充字典

    reponse = {}
    polling_active=True
    while polling_active:
        name = input("
    what's your name")
        res = input("which mountain would you like to climb someday")
        reponse[name] = res
        repeat = input("Would you like let another person repond?(y/n)")
        if repeat=='n'
          polling_active = False
    
    print("
     -- poll reponse")
    for name,res in reponse:
        print("name: "+name+" res:"+res)
    

    输入输出

    input()让程序暂停运行,等待用户输入一些文本。获取用户输入后,python将其存储在一个变量。

    message = input("tell me your name")
    print("welconme,"+message)
    

    运算符

    % 取模 / 取余

    函数

    定义函数

    关键字def定义

    def getuser():
        //函数体
    
    • 使用任意数量的关键字实参
    # 形参**user_info 代表键值对构成的字典
    def build_profile( first, last, **user_info ):
    
    

    main函数

    定义的main()函数只有当该Python脚本直接作为执行程序时才会执行

    if __name__ == '__main__':
        main()   #执行体
    

    导入文件函数

    • import pizza 打开pizza.py,并将其中所有的函数复制到当前程序中。

    使用某个函数:pizza.function_name()

    • 导入特定函数

    from moudle_name import function_name

    多个函数

    from moudle_name import function_0,fuction_1,function_2

    调用函数:moudle_name.function_name

    • 使用as给函数指定别名

    from pizza import make_pizza as mp

    调用函数:mp(1,2)

    • 使用as给模块指定别名

    import pizza as p

    调用函数:p.make_pizza(1,2)

    • 导入模块中的所有函数

    from pizza import *

    调用函数:

    make_pizza(1,2)

    文件操作

    • 创建一个包含文件各行内容的列表
      使用关键字with时,open()返回的文件对象只在with代码块内可用。如果要在with代码块外访问文件的内容,可在with代码块内将文件存储在一个列表中,并在with代码块外使用该列表。
    filename = 'pi_digits.txt'
    with open(filename) as file_object:   #file_object 文件对象
        lines = file_object.readlines()   # readlines()读取文件每一行存储到列表中
    
    for line in lines:
        print(line.rstrip())              #rstrip()删除首尾空格
    

    要以每次一行的方式检查文件,可对文件对象进行for循环处理:

    filename = 'pi_digits.txt'
    with open(filename) as file_object:
        for line in file_object:
            print(line)
    

    打开读取文件,内容显示在屏幕上

    filename = 'pi_digits.txt'
    with open(filename) as file_object:
        contents = file_object.read()         #read() 读取文件内容
        print(contents)
    

    关键字with不再访问文件后会关闭文件,无需显示调用close(),这样避免在程序出错,没有关闭文件。

    • 写入空文件
    filename = 'programmering.txt'
    with open(filename,'w') as file_object:
        file_object.write("I love programmering")
    

    open第二个实参是打开的模式,'w'是写入模式,'r'是读取模式,'a'是附加模式,'r+'是读取写入模式,默认以只读模式打开。

    python只能将字符串写入文本文件。要将数值存储到文本文件中,必须使用str()转换为字符串格式。

    json

    • json_dump 数据存储到文件中
    import json
    numbers = [2,3,5,7,13]
    filename='numbers.json'
    with open(filename,'w') as f_obj:
        json_dump(numbers,f_obj);
    
    • json_load 数据存储到内存中
    import json
    filename='numbers.json'
    with open(filename,'w') as f_obj:
        numbers = dump.load(f_obj)
    print(numbers)
    

    程序间进行数据交互可以使用。

    range()

    • 使用range()轻松生成一系列数字。
    # 依次打印1到5的数字
    for value in range(1,5)
        print(value)
    
    • 利用range()创建数字列表

    number = list(range(1,5))

    min 、max 、sum

    min(number)
    max(number)
    sum(number)
    
    

    int、float

    int()将字符串转换为int
    float()将字符串转换为float

    比如当从文件中国读取文件获得一个数字,就需要转换使用。

    md5

    import hashlib
    
    def get_token():
        md5str = "abc"
      #生成一个md5对象
        m1 = hashlib.md5()
      #使用md5对象里的update方法md5转换
        m1.update(md5str.encode("utf-8"))
        token = m1.hexdigest()
        return token
    

    时间处理

    import datetime
    
    #获取当前日期和时间:
    now_time = datetime.datetime.now()
    
    #格式化成我们想要的日期:strftime()
    datetime.datetime.now().strftime('%Y-%m-%d')
    #格式“小时”:
    now_hour=add_hour.strftime('%H')
    
    #在当前时间增加1小时:
    add_hour=datetime.datetime.now()+datetime.timedelta(hours=1)   #需要导入timedelta库
     
    # 时间对象,时间字符串,时间戳 处理
    #字符串转datetime:
     >>> string = '2014-01-08 11:59:58'
     >>> time1 = datetime.datetime.strptime(string,'%Y-%m-%d %H:%M:%S')
     >>> print time1
     2014-01-08 11:59:58
     
    #datetime转字符串:
     >>> time1_str = datetime.datetime.strftime(time1,'%Y-%m-%d %H:%M:%S')
     >>> time1_str
     '2014-01-08 11:59:58'
     
    #时间戳转时间对象:
     
     >>>time1 = time.localtime()
     
     >>>time1_str = datetime.datetime.fromtimestamp(time1)
    

    时间格式:

    %a 星期几的简写
    %A 星期几的全称
    %b 月分的简写
    %B 月份的全称
    %c 标准的日期的时间串
    %C 年份的后两位数字
    %d 十进制表示的每月的第几天
    %D 月/天/年
    %e 在两字符域中,十进制表示的每月的第几天
    %F 年-月-日
    %g 年份的后两位数字,使用基于周的年
    %G 年分,使用基于周的年
    %h 简写的月份名
    %H 24小时制的小时
    %I 12小时制的小时
    %j 十进制表示的每年的第几天
    %m 十进制表示的月份
    %M 十时制表示的分钟数
    %n 新行符
    %p 本地的AM或PM的等价显示
    %r 12小时的时间
    %R 显示小时和分钟:hh:mm
    %S 十进制的秒数
    %t 水平制表符
    %T 显示时分秒:hh:mm:ss
    %u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
    %U 第年的第几周,把星期日做为第一天(值从0到53)
    %V 每年的第几周,使用基于周的年
    %w 十进制表示的星期几(值从0到6,星期天为0)
    %W 每年的第几周,把星期一做为第一天(值从0到53)
    %x 标准的日期串
    %X 标准的时间串
    %y 不带世纪的十进制年份(值从0到99)
    %Y 带世纪部分的十制年份
    %z,%Z 时区名称,如果不能得到时区名称则返回空字符。
    %% 百分号
    

    calss Dog():
        """备注""""
        
        name
        
        //构造函数
        def __init__( self, name ):
            self.name = name
        
        def eat():
            #函数体
    

    修改属性的方式有三种:使用类的实例来修改;类中的方法来修改;使用方法进行递增(指定特定的值)

    继承

    class Person(object):   # 定义一个父类
    
        def talk(self):    # 父类中的方法
            print("person is talking....")   
    
    
    class Chinese(Person):    # 定义一个子类, 继承Person类
    
        def walk(self):      # 在子类中定义其自身的方法
            print('is walking...')
    

    导入

    from car import Car #从car.py导入Car类
    
    from car import Car, ElectricCar   #导入多个类
    
    import car   #导入整个模块
    
    from moudle_name import *  #导入模块所有的类
    

    异常

    未对异常进行处理,程序将停止运行,并显示一个traceback(包含有关异常的报告),反之程序可以继续运行。

    try:
       print(5/0)
    except ZeroDivisionError:
        print("You can't divide by zero")
        //pass    #pass跳过异常,充当占位符,提醒程序什么都不做
    
    • 主动抛出异常

    raise语句 主动抛出异常。 格式: 主动抛出异常终止程序 raise 异常名称(‘异常描述’)

    raise RuntimeError('testError')

    单元测试

    单元测试用于核实函数的某个方面没有问题;测试用例是一组单元测试。

    构建工具setup.py

    安装依赖包,类似php composer
    https://www.cnblogs.com/maociping/p/6633948.html

    注意

    • 避免缩进错误。python根据缩进来判读代码行与前一个代码行的关系。
    • 类的编码风格,类名使用驼峰命名法,即类名单词首字母大写,实例名和模块名小写格式,并在单词间使用下划线。
    • python 包就是文件夹,但该文件夹下面必须有个__init__.py 文件
  • 相关阅读:
    资金管理2
    php面试题之三——PHP网络编程(高级部分)
    运用JS设置cookie、读取cookie、删除cookie
    PHP 程序员学数据结构与算法之《栈》
    《高性能MySQL》学习笔记
    如何配置Notepad++的C_C++语言开发环境
    memcached完全剖析–1. memcached的基础
    Redis和Memcached的区别
    地区三级联动
    lwip:与tcp发送相关的选项和函数
  • 原文地址:https://www.cnblogs.com/followyou/p/10653444.html
Copyright © 2011-2022 走看看