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

    1.is和==的区别

     1 is:判断两个值的内存地址(id)是否相等。
     2 ==:两个value值是否相等。
     3 
     4 is:
     5 1.第一种情况:
     6 >>> n1=123
     7 >>> n2=123
     8 >>> n1 is n2
     9 True
    10 >>> id(n1)
    11 1353978128
    12 >>> id(n2)
    13 1353978128
    14 
    15 2.第二种情况:
    16 >>> n1=1234567
    17 >>> n2=1234567
    18 >>> n1 is n2
    19 False
    20 >>> id(n1)
    21 43798416
    22 >>> id(n2)
    23 48262320
    24 
    25 第三种情况:
    26 >>> n1=1.2
    27 >>> n2=1.2
    28 >>> n1 is n2
    29 False
    30 >>> id(n1)
    31 43819296
    32 >>> id(n2)
    33 43819248
    34 
    35 总结:Python仅仅对比较小的整数对象进行缓存(范围为范围[-5, 256])缓存起来,而并非是所有整数对象。需要注意的是,这仅仅是在命令行中执行,而在Pycharm或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化。
    36 
    37 ==:
    38 第一种情况:
    39 >>> n1=123
    40 >>> n2=123
    41 >>> n1 == n2
    42 True
    43 
    44 第二种情况:
    45 >>> n1=1234567
    46 >>> n2=1234567
    47 >>> n1 == n2
    48 True
    49 
    50 第三种情况:
    51 >>> n1=1.1
    52 >>> n2=1.1
    53 >>> n1 == n2
    54 True
    55 
    56 1、is 比较两个对象的 id 值是否相等,是否指向同一个内存地址;
    57 2、== 比较的是两个对象的内容是否相等,值是否相等;
    58 3、小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用;
    59 4、is 运算符比 == 效率高,在变量和None进行比较时,应该使用 is
    View Code

     2.*args和**kwargs的作用

    def func(*args,**kwargs):
        print('args:',args)
        print('kwargs:',kwargs)
    
    func(1,['a','b'],{'a'},q=1)
    
    执行结果:
    args: (1, ['a', 'b'], {'a'})
    kwargs: {'q': 1}
    
    总结:
    *args:生成一个集合,接收的是形参。
    **kwargs:生成一个字典,接收的是实参。
    View Code

     3.用一行代码实现数值交换

       a = 1
       b = 2

    a=1
    b=2
    a,b=b,a
    print("a:",a,'b:',b)
    
    执行结果:
    a: 2 b: 1
    View Code

    4.求结果: a.[ i % 2 for i in range(10)] b.( i % 2 for i in range(10))

    >>> a=[ i % 2 for i in range(10)]
    >>> a
    [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
    
    >>> b=( i % 2 for i in range(10))
    >>> b
    <generator object <genexpr> at 0x000000000417D0A0>
    
    总结:
    [] 返回的是列表
    () 返回的是生成器,需要for循环取出数据。
    View Code

     5.如何使用python删除一个文件

    os.remove('文件名')
    View Code

    6.xrange和range区别 , readlines和xredlines区别

    python2.X
    range:返回一个列表,例如[0,1,2,3,4...]
    xrange:返回一个xrange对象,这个对象是可迭代对象。
    
    readlines:返回一个所有内容的列表,每个索引就是一行数据。
    xreadlines:返回一个生成器。
    
    python3.X
    xrange改为range,执行会生成一个range对象。
    
    readlines:返回一个所有内容的列表,每个索引就是一行数据。
    
    read:全部读来
    readline:只读取一行
    View Code

    7.一行去重排序列表

    >>> a=[1,2,3,1,1,'a','z','b','a']
    >>> sorted(list(set(a)),key=a.index)
    [1, 2, 3, 'a', 'z', 'b']
    
    #两行去重排序
    >>> a=[1,2,3,1,1,'a','z','b','a']
    >>> b=list(set(a))
    >>> b.sort(key=a.index)
    >>> b
    [1, 2, 3, 'a', 'z', 'b']
    View Code

     8.什么是闭包

    1.闭包函数必须有内嵌函数
    2.内嵌函数需要引用该嵌套函数上一级namespace中的变量
    3.闭包函数必须返回内嵌函数
    
    作用:保存局部变量
    
    例子:
    def func():
        num = 1
        def test():
            #num是外层函数的变量
            sum = num +1
            print(sum)
       #返回是内层函数的函数名
        return test
    t = func()
    t()
    View Code

    9.序列化

    json.dumps    将 Python 对象编码成 JSON 字符串
    json.loads    将已编码的 JSON 字符串解码为 Python 对象
    例如:
    >>> import json
    >>> data={'name':'wang','age':18}
    >>> json.dumps(data)
    '{"name": "wang", "age": 18}'
    
    #注意data里面的数据用双引号,外面用单元号,要不然会报错
    >>> data='{"name":"wang","age":18}'
    >>> json.loads(data)
    {u'age': 18, u'name': u'wang'}
    View Code

    10.特殊语法: map filter reduce

    map:返回的是最终的执行结果
    
    def fun(n):
        return n+1
    num = [1,2,3]
    map(fun,num)
    结果:[2,3,4]
    
    
    filter:如果满足函数条件,返回的是之前的可迭代对象。
    def is_odd(n):
        return n % 2 == 1
     
    newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    print(newlist)
    
    结果:[1, 3, 5, 7, 9]
    
    
    from functools import reduce  #求和
    
    def add(x,y):
        return x + y
    
    print (reduce(add, range(1, 101)))
    
    结果:5050
    View Code

    11.生成器,可迭代对象,迭代器

    生成器:yield type()--> 返回generator
    
    凡是可作用于for循环的对象都是Iterable类型;
    凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
    集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
    View Code

    12.字符串,列表转换

    #字符串转列表
    >>> data="a,b,c"
    >>> data.split(',')
    ['a', 'b', 'c']
    
    #列表转字符串
    >>> data=['a','b','c']
    >>> ' '.join(data)
    'a b c'
    View Code

     13.99乘法表

    for i in range(1,10):
        b=''
        for v in range(1,i+1):
            s = '%s x %s = %s' %(v,i,i*v)
            b=b+s+'   '
        print(b)
    
    一行实现:
    print('
    '.join([' '.join(['%s x %s = %s' %(y,x,y*x) for y in range(1,x+1)]) for x in range(1,10)]))
    View Code
  • 相关阅读:
    语言基础
    进制转换
    ado属性扩展
    ado数据模型和数据访问类,泛型集合
    完整的修改和删除
    完整的删除
    修改
    类库
    接口
    抽象类
  • 原文地址:https://www.cnblogs.com/iwxk/p/9095340.html
Copyright © 2011-2022 走看看