热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python赋值与等于的区别_Python中的赋值操作与C语言中的赋值操作中的巨大差别!...

首先让我们来看一个简单的C程序:1a8;2ba;3b6;4printf(a%d,b%d\n,a,b);ViewCode相信只要学过C语言,不用运行程

首先让我们来看一个简单的C程序:

1 a = 8;2 b = a;3 b = 6;4 printf("a = %d, b = %d\n",  a, b);

View Code

相信只要学过C语言, 不用运行程序便能知道程序将会打印出a = 8,  b = 6.

现在让我们来看一看这个程序的python版本

1 a = 82 b = a3 b = 64 print(a, b)

View Code

让我们来看一看运行结果:

似乎一切都正常。

不,要是真的是那么简单,那要我干嘛!!!

看,程序又来了。。。

1 name = ['fujian', 'beijing', 'shanghai']2 name2 = name3 name2[1] = 'tainjing'4 print(name)5 print(name2)

python程序

结果是不是还是我们所想的那样:

['fujian', 'beijing', 'shanghai']

['fujian', 'tainjing', 'shanghai']

可现实是:

Why!Why!Why!

原因如下:

1. c语言中的变量好比一个盒子,a = 8就好比将8这个数据放入了这个名为a的盒子中;而python在这一方面与C语言可算是天壤之别;

python中的变量有点类似C语言中指针, a = 8在python中就好比a 指向了8这个数据.

2. python中的每一次赋值都是将变量指向一个新的的数据(位置)

现在我们在回过头来看一看这两个python程序,

一:

a = 8

b = a

b = 6

首先语句a = 8说明变量a指向了8这个数据;

接着语句a = b说明变量b指向了a,也就等同与a与b一起指向了8这个数据;

最后语句b = 6,说明此时变量b的指向已经发生了改变, 但是变量a的指向并没有改变,变量b现在指向了6这个数据,变量a还是指向原来的数据8;

所以最后会打印出a = 8,  b = 6.

二:

name = ["fujian", "beijing", "shanghai"]

name2 = name

name2[1] = "tianjing"

同样我们可以类似上一个程序那样分析:

首先第一条语句说明变量name指向了一个列表;

第二条语句说明变量name2与name指向了同一个列表;

第三条语句的分析非常重要:

请注意

name[1]其实也可以看成是一个‘变量’,只不过这个变量是属于name所指向的列表的一部分,它原先是指向“beijing”这个字符串,

现在经过第三条语句后,变量name[1]就改变了指向,指向了“tianjing"这个字符串了;这样也恰好改变了列表中的内容。

再加上最终name与name2还是指向最初的那个列表(只不过这个列表‘更新’了),

所以现在问题不就解决了!!!



推荐阅读
  • 本文深入探讨了 Python 中的循环结构(包括 for 循环和 while 循环)、函数定义与调用,以及面向对象编程的基础概念。通过详细解释和代码示例,帮助读者更好地理解和应用这些核心编程元素。 ... [详细]
  • 本文详细解析了如何使用Python语言在STM32硬件平台上实现高效的编程和快速的应用开发。通过具体的代码示例,展示了Python简洁而强大的特性。 ... [详细]
  • 装饰器是一种用于在不修改原函数代码的情况下,动态地添加功能的工具。它允许你在函数执行前后插入额外的逻辑,从而增强或改变函数的行为。 ... [详细]
  • 本文介绍如何在 Android 中通过代码模拟用户的点击和滑动操作,包括参数说明、事件生成及处理逻辑。详细解析了视图(View)对象、坐标偏移量以及不同类型的滑动方式。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • 本文介绍如何通过注册表编辑器自定义和优化Windows文件右键菜单,包括删除不需要的菜单项、添加绿色版或非安装版软件以及将特定应用程序(如Sublime Text)添加到右键菜单中。 ... [详细]
  • 本文详细探讨了C语言中指针的概念,特别是指针在变量和数组中的应用。通过实例讲解,帮助读者更好地掌握指针的使用方法。 ... [详细]
  • 本文介绍了几种不同的编程方法来计算从1到n的自然数之和,包括循环、递归、面向对象以及模板元编程等技术。每种方法都有其特点和适用场景。 ... [详细]
  • Python入门:第一天准备与安装
    本文详细介绍了Python编程语言的基础知识和安装步骤,帮助初学者快速上手。涵盖Python的特点、应用场景以及Windows环境下Python和PyCharm的安装方法。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • 本文详细介绍了C语言中的指针,包括其基本概念、应用场景以及使用时的优缺点。同时,通过实例解析了指针在内存管理、数组操作、函数调用等方面的具体应用,并探讨了指针的安全性问题。 ... [详细]
  • C语言标准及其GCC编译器版本
    编程语言的发展离不开持续的维护和更新。本文将探讨C语言的标准演变以及GCC编译器如何支持这些标准,确保其与时俱进,满足现代开发需求。 ... [详细]
  • C语言基础入门:7个经典小程序助你快速掌握编程技巧
    本文精选了7个经典的C语言小程序,旨在帮助初学者快速掌握编程基础。通过这些程序的实践,你将更深入地理解C语言的核心概念和语法结构。 ... [详细]
author-avatar
伊劾kj
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有