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

    路径和文件名不要有中文

    #!/usr/bin/env python

    #-*- coding:utf-8 -*-           2.7需要加此行。3.5不用

    版本区别:

    python3.5 print('hello,world')  默认utf-8       input("请输入名字")                    utf-8转换gbk:       decode(''utf8'')先解码成unicode,然后encode("gbk")

    python2.7 print 'hello,world'      默认ascii        raw_input("请输入名字:")        utf-8转换gbk:

    单行注释:#     ;          多行注释:'''   很多行    '''

    .pyc文件:python在执行过程中:python-->字节码-->机器码-->计算机,这个.pyc就是字节码文件,如果把py删掉,pyc也可用

    python中的赋值是赋值内存中的地址,a=6;b=a;如果a=7,b仍然是6,因为另外出了个空间装7给a了

    continue:跳出当前循环,继续下次循环

    break:跳出所有循环

    查看对象有哪些方法:

    方法1:print(type(temp)),先找到类,然后按住ctrl并在类上面单击

    方法2:help(type(temp)) 或dir(temp)

    python2.7有的时候不显示文字,而是现实十六进制,这时候需要编码,b=a.decode(''utf8'') ;c=b.encode('gbk')或者x=str(y,encoding='utf-8')

    修改自身与创建副本:

    一般情况下,字符串的方法多数都是创建副本,list,tuple,dic多数都是修改自身

    元组的元素虽然不能变,但tu=(1,2,['a','b'])中的数组是可以变的,其实并不是元组的元素不可以变,只是说元组没有相关的方法。

    三元运算:name = 值1 if 条件 else 值2  //如果条件成立,name=值1,如果条件不成立,name=值2

    判断一个变量是不是某一个类创建的:

    a='hello'

    r=isinstance(a,str)

    深浅拷贝

    一、数字和字符串

    对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。

    import copy
    # ######### 数字、字符串 #########
    n1 = 123
    # n1 = "i am alex age 10"
    print(id(n1))
    # ## 赋值 ##
    n2 = n1
    print(id(n2))
    # ## 浅拷贝 ##
    n2 = copy.copy(n1)
    print(id(n2))
      
    # ## 深拷贝 ##
    n3 = copy.deepcopy(n1)
    print(id(n3))
    

    二、其他基本数据类型

    1、赋值,只是创建一个变量,该变量指向原来内存地址,如:

    n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
      
    n2 = n1
    

     

    2、浅拷贝

    浅拷贝,在内存中只额外创建第一层数据

    import copy
      
    n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
      
    n3 = copy.copy(n1)
    

     

    3、深拷贝

    深拷贝,在内存中将所有的数据重新创建一份(除了最后一层,即:python内部对字符串和数字的优化)

    import copy
      
    n1 = {"k1": "wu", "k2": 123, "k3": ["alex", 456]}
      
    n4 = copy.deepcopy(n1)
    

     


    定义函数

    def 函数名(形参):
        函数体
        return 123
    

    定义函数的时候,如果有含默认值的参数,要把默认值的参数放在后面,例如def email(email,passwd=123)

    执行函数:

    函数名(实参)
    

     默认实参是与形参一一对应的,如果非不对应,需要在每个实参加上形参,如test(email='xxxx@qq.com',passwd='123')

     动态参数一(*arg)表示元组:

    def f1(*a):
        print(a,type(a))
    f1(123,456)
    显示(123,456),tuple
    

     动态参数二(**arg)表示字典:

    def f2(**b):
        print(b,type(b))
    f2(k1=123,k2=456)
    返回{k1=123,k2=456},dict
    

     万能参数(*arg,**brg)  #注意顺序不能变,*在前,**在后

     函数名也可以当作参数来传递

    def f1(arg):
        print(arg)
    def f2():
        print('xxx')
    f1(f2)  #把f2当作参数的话,就没有括号
    f2()    #执行的话就有括号
    

     内置函数

    x=eval("1+2+3")     #把字符串作为表达式来执行,eval是有返回值的;结果x=6

    x=eval("a+3",{"a":2})  #后面字典是给变量a赋值;结果x=5

    exec("for i in range(10):print(i)")  #exec也是把字符串作为表达式来执行,只不过exec是没有返回值的

    filter(函数名,可迭代的对象):循环可迭代的对象,将迭代的每一个元素作为函数的参数,如果函数值返回True,则保留,否则过滤掉,举例:

    def f1(x):
        if x>2:
            return True
        else:
            return False
    ret=filter(f1,[1,2,3,4])  #结果ret=[3,4] 注意函数没有括号,这就是把函数当参数
    

    map(函数,可迭代的对象):对每个迭代的对象进行函数运算,返回一个由函数返回值组成的可迭代对象,举例:

    ret=map(lambda x:x+100,[1,2,3,4,5]) #结果ret=[101,102,103,104,105]
    

     sort()sorted()

    a=[1,3,2,4]
    b=sorted(a)  #sorted()创建一个副本,a不变
    a.sort()     #sort()改变自身
    

    文件操作

    一、打开文件

    open(文件名,模式,编码)

    文件句柄 = open('文件路径', '模式')
    f=open('1.txt','r',encoding='utf-8')默认就是utf-8
    data=f.read() 按照utf-8转换成字节
    
    打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。
    
    打开文件的模式有:
    
        r ,只读模式【默认】
        w,只写模式【不可读;不存在则创建;存在则清空内容;】
        x, 只写模式【不可读;不存在则创建,存在则报错】
        a, 追加模式【可读;   不存在则创建;存在则只追加内容;】
    
    "+" 表示可以同时读写某个文件
    
        r+, 读写【可读,可写】
        w+,写读【可读,可写】
        x+ ,写读【可读,可写】
        a+, 写读【可读,可写】
    
     "b"表示以字节(二进制)的方式操作,以字节方式打开时不用encoding
    
        rb  或 r+b
        wb 或 w+b
        xb 或 w+b
        ab 或 a+b
    各种模式

    'r+'(推荐):

    如果先读再写,写的时候在末尾追加,指针移动到最后;

    如果想在某一位置写,要先f.seek(位置号)再写,会覆盖后面的(用f.tell()查看当前位置)

    w+':打开的同时已经清空,再写入之后,才能读,并且需要调整指针f.seek(0)才能读出来,要不然指针在最后

    a+':打开的同时指针已经到最后,写的时候也是追加,指针到最后,就算seek,也是最后

    二、操作文件

    for line in f:
        print(line)
    f自带可迭代每行
    
    class file(object)
        def close(self): # real signature unknown; restored from __doc__
            关闭文件
            """
            close() -> None or (perhaps) an integer.  Close the file.
             
            Sets data attribute .closed to True.  A closed file cannot be used for
            further I/O operations.  close() may be called more than once without
            error.  Some kinds of file objects (for example, opened by popen())
            may return an exit status upon closing.
            """
     
        def fileno(self): # real signature unknown; restored from __doc__
            文件描述符  
             """
            fileno() -> integer "file descriptor".
             
            This is needed for lower-level file interfaces, such os.read().
            """
            return 0    
     
        def flush(self): # real signature unknown; restored from __doc__
            刷新文件内部缓冲区
            """ flush() -> None.  Flush the internal I/O buffer. """
            pass
     
     
        def isatty(self): # real signature unknown; restored from __doc__
            判断文件是否是同意tty设备
            """ isatty() -> true or false.  True if the file is connected to a tty device. """
            return False
     
     
        def next(self): # real signature unknown; restored from __doc__
            获取下一行数据,不存在,则报错
            """ x.next() -> the next value, or raise StopIteration """
            pass
     
        def read(self, size=None): # real signature unknown; restored from __doc__
            读取指定字节数据
            """
            read([size]) -> read at most size bytes, returned as a string.
             
            If the size argument is negative or omitted, read until EOF is reached.
            Notice that when in non-blocking mode, less data than what was requested
            may be returned, even if no size parameter was given.
            """
            pass
     
        def readinto(self): # real signature unknown; restored from __doc__
            读取到缓冲区,不要用,将被遗弃
            """ readinto() -> Undocumented.  Don't use this; it may go away. """
            pass
     
        def readline(self, size=None): # real signature unknown; restored from __doc__
            仅读取一行数据
            """
            readline([size]) -> next line from the file, as a string.
             
            Retain newline.  A non-negative size argument limits the maximum
            number of bytes to return (an incomplete line may be returned then).
            Return an empty string at EOF.
            """
            pass
     
        def readlines(self, size=None): # real signature unknown; restored from __doc__
            读取所有数据,并根据换行保存值列表
            """
            readlines([size]) -> list of strings, each a line from the file.
             
            Call readline() repeatedly and return a list of the lines so read.
            The optional size argument, if given, is an approximate bound on the
            total number of bytes in the lines returned.
            """
            return []
     
        def seek(self, offset, whence=None): # real signature unknown; restored from __doc__
            指定文件中指针位置
            """
            seek(offset[, whence]) -> None.  Move to new file position.
             
            Argument offset is a byte count.  Optional argument whence defaults to
    (offset from start of file, offset should be >= 0); other values are 1
            (move relative to current position, positive or negative), and 2 (move
            relative to end of file, usually negative, although many platforms allow
            seeking beyond the end of a file).  If the file is opened in text mode,
            only offsets returned by tell() are legal.  Use of other offsets causes
            undefined behavior.
            Note that not all file objects are seekable.
            """
            pass
     
        def tell(self): # real signature unknown; restored from __doc__
            获取当前指针位置
            """ tell() -> current file position, an integer (may be a long integer). """
            pass
     
        def truncate(self, size=None): # real signature unknown; restored from __doc__
            截断数据,仅保留指定之前数据
            """
            truncate([size]) -> None.  Truncate the file to at most size bytes.
             
            Size defaults to the current file position, as returned by tell().
            """
            pass
     
        def write(self, p_str): # real signature unknown; restored from __doc__
            写内容
            """
            write(str) -> None.  Write string str to file.
             
            Note that due to buffering, flush() or close() may be needed before
            the file on disk reflects the data written.
            """
            pass
     
        def writelines(self, sequence_of_strings): # real signature unknown; restored from __doc__
            将一个字符串列表写入文件
            """
            writelines(sequence_of_strings) -> None.  Write the strings to the file.
             
            Note that newlines are not added.  The sequence can be any iterable object
            producing strings. This is equivalent to calling write() for each string.
            """
            pass
     
        def xreadlines(self): # real signature unknown; restored from __doc__
            可用于逐行读取文件,非全部
            """
            xreadlines() -> returns self.
             
            For backward compatibility. File objects now include the performance
            optimizations previously implemented in the xreadlines module.
            """
            pass
    2.x
    class TextIOWrapper(_TextIOBase):
        """
        Character and line based layer over a BufferedIOBase object, buffer.
        
        encoding gives the name of the encoding that the stream will be
        decoded or encoded with. It defaults to locale.getpreferredencoding(False).
        
        errors determines the strictness of encoding and decoding (see
        help(codecs.Codec) or the documentation for codecs.register) and
        defaults to "strict".
        
        newline controls how line endings are handled. It can be None, '',
        '
    ', '
    ', and '
    '.  It works as follows:
        
        * On input, if newline is None, universal newlines mode is
          enabled. Lines in the input can end in '
    ', '
    ', or '
    ', and
          these are translated into '
    ' before being returned to the
          caller. If it is '', universal newline mode is enabled, but line
          endings are returned to the caller untranslated. If it has any of
          the other legal values, input lines are only terminated by the given
          string, and the line ending is returned to the caller untranslated.
        
        * On output, if newline is None, any '
    ' characters written are
          translated to the system default line separator, os.linesep. If
          newline is '' or '
    ', no translation takes place. If newline is any
          of the other legal values, any '
    ' characters written are translated
          to the given string.
        
        If line_buffering is True, a call to flush is implied when a call to
        write contains a newline character.
        """
        def close(self, *args, **kwargs): # real signature unknown
            关闭文件
            pass
    
        def fileno(self, *args, **kwargs): # real signature unknown
            文件描述符  
            pass
    
        def flush(self, *args, **kwargs): # real signature unknown
            刷新文件内部缓冲区
            pass
    
        def isatty(self, *args, **kwargs): # real signature unknown
            判断文件是否是同意tty设备
            pass
    
        def read(self, *args, **kwargs): # real signature unknown
            读取指定字节数据
            pass
    
        def readable(self, *args, **kwargs): # real signature unknown
            是否可读
            pass
    
        def readline(self, *args, **kwargs): # real signature unknown
            仅读取一行数据
            pass
    
        def seek(self, *args, **kwargs): # real signature unknown
            指定文件中指针位置
            pass
    
        def seekable(self, *args, **kwargs): # real signature unknown
            指针是否可操作
            pass
    
        def tell(self, *args, **kwargs): # real signature unknown
            获取指针位置
            pass
    
        def truncate(self, *args, **kwargs): # real signature unknown
            截断数据,仅保留指定之前数据
            pass
    
        def writable(self, *args, **kwargs): # real signature unknown
            是否可写
            pass
    
        def write(self, *args, **kwargs): # real signature unknown
            写内容
            pass
    
        def __getstate__(self, *args, **kwargs): # real signature unknown
            pass
    
        def __init__(self, *args, **kwargs): # real signature unknown
            pass
    
        @staticmethod # known case of __new__
        def __new__(*args, **kwargs): # real signature unknown
            """ Create and return a new object.  See help(type) for accurate signature. """
            pass
    
        def __next__(self, *args, **kwargs): # real signature unknown
            """ Implement next(self). """
            pass
    
        def __repr__(self, *args, **kwargs): # real signature unknown
            """ Return repr(self). """
            pass
    
        buffer = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        closed = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        encoding = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        errors = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        line_buffering = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        name = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        newlines = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        _CHUNK_SIZE = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    
        _finalizing = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
    3.x
    with open('a.txt','r') as f:
      f.read()
    #省去了f.close()
    同时打开两个文件:
    with open('a.txt','r') as f1,open('b.txt','r') as f2
  • 相关阅读:
    restful风格
    拦截器(拦截都是控制层的地址。 filter: )
    Springmvc完成ajax功能,controller类返回的数据类型为String且为汉字时出现乱码
    文件上传
    Springmvc完成ajax功能。(jquery. $)
    Controller如何进行重定向跳转
    Maven学习日志一
    SSM整合
    Spring学习日志四
    Spring学习日志三
  • 原文地址:https://www.cnblogs.com/hijacklinux/p/6933790.html
Copyright © 2011-2022 走看看