zoukankan      html  css  js  c++  java
  • * 和** 的使用及关于赋值

    1. * 和 ** 的用法

    • 函数定义时接收不定长参数

        def foo(*args, **kwargs):
            pass
       
    • 参数传递

        def foo(x, y, z, a, b):
            print(x)
            print(y)
            print(z)
            print(a)
            print(b)
        lst = [1, 2, 3]
        dic = {'a': 22, 'b': 77}
        foo(*lst, **dic)
       
    • import * 语法

      • 文件 xyz.py

          __all__ = ('a', 'e', '_d')
          a = 123
          _b = 456
          c = 'asdfghjkl'
          _d = [1,2,3,4,5,6]
          e = (9,8,7,6,5,4)
         
      • 文件 abc.py

          from xyz import *
          print(a)
          print(_b)
          print(c)
          print(_d)
          print(e)
         

    2. Python 的赋值和引用

    • ==, is: == 判断的是值, is 判断的是内存地址 (即对象的id)

    • 小整数对象: [-5, 256]

    • copy, deepcopy 的区别

      • copy: 只拷贝表层元素

      • deepcopy: 在内存中重新创建所有子元素

    • 练习1: 说出执行结果

        def extendList(val, lst=[]):
            lst.append(val)
            return lst
        list1 = extendList(10)
        list2 = extendList(123, [])
        list3 = extendList('a')
       
    • 练习2: 说出下面执行结果

        from copy import copy, deepcopy
        from pickle import dumps, loads
        a = ['x', 'y', 'z']
        b = [a] * 3
        c = copy(b)
        d = deepcopy(b)
        e = loads(dumps(b, 4))
        b[1].append(999)
        b.append(777)
        c[1].append(999)
        c.append(555)
        d[1].append(999)
        d.append(333)
        e[1].append(999)
        e.append(111)
       
    • 自定义 deepcopy:   my_deepcopy = lambda item: loads(dumps(item, 4))

  • 相关阅读:
    2014 12 27 bestcoder 第一题
    大数阶乘问题!
    学校acm比赛题
    hdu1002 大数相加问题
    写于创建之初
    Linux指令 vi编辑,保存及退出
    Java基础-反射
    Java基础-接口与多态
    00023-layui表单有check、radio、switch,未选中时值不提交的解决
    00022-layui 显示表单,iframe父子页面传值
  • 原文地址:https://www.cnblogs.com/gugubeng/p/9755191.html
Copyright © 2011-2022 走看看