最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python变量传递的详细介绍

来源:懂视网 责编:小采 时间:2020-11-27 14:25:31
文档

python变量传递的详细介绍

python变量传递的详细介绍:python变量传递数值代码num_1 = 123 num_2 = num_1 # 改变num_2值前 print 'num_1 = {0}, num_2 = {1}'.format(num_1, num_2) num_2 = 0 # 改变num_2值后 print 'num_1 = {0}, num_2 = {1}
推荐度:
导读python变量传递的详细介绍:python变量传递数值代码num_1 = 123 num_2 = num_1 # 改变num_2值前 print 'num_1 = {0}, num_2 = {1}'.format(num_1, num_2) num_2 = 0 # 改变num_2值后 print 'num_1 = {0}, num_2 = {1}

python变量传递

数值

  • 代码

  • num_1 = 123
    num_2 = num_1
    # 改变num_2值前
    print 'num_1 = {0}, num_2 = {1}'.format(num_1, num_2)
    num_2 = 0
    # 改变num_2值后
    print 'num_1 = {0}, num_2 = {1}'.format(num_1, num_2)
  • 输出

  • num_1 = 123, num_2 = 123
    num_1 = 123, num_2 = 0
  • 结论

  • 数值变量之间的是按值传递。

    字符串

  • 代码

  • str_1 = 'hello python'
    str_2 = str_1
    # 改变str_2值前
    print 'str_1 = {0}, str_2 = {1}'.format(str_1, str_2)
    str_2 = 'hello'
    # 改变str_2值后
    print 'str_1 = {0}, str_2 = {1}'.format(str_1, str_2)
  • 输出

  • str_1 = hello python, str_2 = hello python
    str_1 = hello python, str_2 = hello
  • 结论

  • 字符串变量之间也是按值传递。

    链表

  • 代码

  • l_1 = [1, 2, 3, 4]
    l_2 = l_1
    print 'l_1 = {0}, l_2 = {1}'.format(l_1, l_2)
    l_2[0] = 100 # 改变l_2的第一个元素
    print 'l_1 = {0}, l_2 = {1}'.format(l_1, l_2)
    l_2 = [1,1,1] # 改变l_2的全部元素
    print 'l_1 = {0}, l_2 = {1}'.format(l_1, l_2)
  • 输出

  • l_1 = [1, 2, 3, 4], l_2 = [1, 2, 3, 4]
    l_1 = [100, 2, 3, 4], l_2 = [100, 2, 3, 4]
    l_1 = [100, 2, 3, 4], l_2 = [1, 1, 1]
  • 结论

  • 从上面的输出结果可以看到,l_1和l_2的作用类似于c/c++中的指针,l_2 = l_1的作用相当于l_2和l_1指向了同一块内存,内容都为[1, 2, 3, 4]。当l_2[0] = 100时,l_1中的第一个元素也被改变了。l_2 = [1,1,1]使得l_2指向了另外一块内存,也就不会对l_1的内容造成影响。

    字典

  • 代码

  • d_1 = {'a': 1, 'b': 2, 'c': 3}
    d_2 = d_1
    print 'd_1 = {0}, d_2 = {1}'.format(d_1, d_2)
    
    d_2['c'] = 10
    print 'd_1 = {0}, d_2 = {1}'.format(d_1, d_2)
    
    d_2 = {'e': 12, 'f': 15}
    print 'd_1 = {0}, d_2 = {1}'.format(d_1, d_2)
  • 输出

  • d_1 = {'a': 1, 'c': 3, 'b': 2}, d_2 = {'a': 1, 'c': 3, 'b': 2}
    d_1 = {'a': 1, 'c': 10, 'b': 2}, d_2 = {'a': 1, 'c': 10, 'b': 2}
    d_1 = {'a': 1, 'c': 10, 'b': 2}, d_2 = {'e': 12, 'f': 15}
  • 结论

  • 输出结果显示dict和list的性质一样,直接赋值时是类似于c++中的按引用传递。

    对象

  • 代码

  • class Point:
     def init(self, x, y):
     self.x = x
     self.y = y
     def str(self):
     return ''.join(['x = ', str(self.x), ' ', 'y = ', str(self.y)])
    
    p_1 = Point(12,34)
    p_2 = p_1
    print 'p_1: {0}; p_2: {1}'.format(p_1, p_2)
    
    p_2.x = 122
    print 'p_1: {0}; p_2: {1}'.format(p_1, p_2)
    
    p_2 = Point(89, 978)
    print 'p_1: {0}; p_2: {1}'.format(p_1, p_2)
  • 输出

  • p_1: x = 12 y = 34; p_2: x = 12 y = 34
    p_1: x = 122 y = 34; p_2: x = 122 y = 34
    p_1: x = 122 y = 34; p_2: x = 89 y = 978
  • 结论

  • 自定义对象在赋值过程中也是按引用传递。

    总结

    Python中数值,字符串在赋值过程中是按值传递;list、dict、对象在赋值过程中默认按引用传递,如果需要按值传递,则可以使用到copy模块下的copy和deepcopy函数。

    文档

    python变量传递的详细介绍

    python变量传递的详细介绍:python变量传递数值代码num_1 = 123 num_2 = num_1 # 改变num_2值前 print 'num_1 = {0}, num_2 = {1}'.format(num_1, num_2) num_2 = 0 # 改变num_2值后 print 'num_1 = {0}, num_2 = {1}
    推荐度:
    标签: 介绍 详细 参数
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top