python封装函数入门教程_python入门基础教程06 python变量与函数

news/2024/7/9 17:20:24

变量基础

变量是编程语言里重要的基本概念,在各类高级语言里都用变量来代表一块内存区域,某一时刻这块区域里存储了‘a’,又一时刻可能又被存储成了’c’,正是由于该块内存里的值可以随时发生变化,我们称之这个代表内存区域的符号为变量。

变量本质

Python程序也是通过变量来访问某块内存里的数据,但Python里的变量的概念却和C语言里的变量有些不同,首先从变量的定义上来区分一下不同之处,在C语言里定义一个变量时,需要指定变量的数据类型,变量初始化时,还需依据等号左边变量的数据类型进行相应赋值,否则会出现数据的转换操作,造成不可想象的错误,而Python没有这方面的要求,在Python里定义变量不需要指定变量的数据类型,可以将各类数据直接赋值给等号左边的变量,比较自由,举例说明一下。

>>>x = 12

>>>print x12

>>>x = 13.09

>>>print x13.09

>>>x = "a1309b"

>>>print x'a1309b'

从上边的程序可以看出赋值时Python不关心变量x的数据类型是什么,学习过C语言的开发者都知道,C规定变量的类型是为了分配一定大小的数据内存区域,而Python定义变量时不指定变量类型,那么对于较长的数据怎么能存储的下呢?下面我们再看一段小程序说明一下为何Python不需要指定变量的类型也可以“存储”下任意长度数据的。

>>> x = 12

>>> type(x)

>>> x = '12'

>>> type(x)

>>> x = 12.03

>>> type(x)

>>> x = '12.0300203000404'

>>> type(x)

注:type函数是返回括号里表达式值的数据类型

上边代码x被分别被赋值整数12,字符串‘12’,浮点型数据12.03,但是都没有问题,都能正确执行,十分奇怪!如果数据很大能存下么(超出了4、8 字节)?我们看一下下面的程序,来分析一下Python的变量和C 语言的变量到底有哪些不同?

>>> x = 12

>>> id(x)

10416516

>>> x = 13

>>> id(x)

10416504

>>> x = '12'

>>> id(x)

19428056

>>> y = '12'

>>> id(y)

19428056

>>> y = 13

>>> id(y)

10416504

>>> y = 12

>>> id(y)

10416516

注:id函数是返回括号里Object在内存里的地址,读者请自行用id输出值作为内存地址,等号右边的值作为内存里的存储内容来画一个内存分布图分析一下。

10416516和10416516、10416504出现多次。

>>> help(id)

Help on built-in function id in module __builtin__:id(...)    id(object) -> integer

Return the identity of an object.  This is guaranteed to be unique among

simultaneously existing objects.  (Hint: it's the object's memory address.)

>>>

当x和y被赋值12的时候id返回值相同,当x和y被赋值13的时候id 返回值也相同,当x 和y被赋值’12’ 的时候id的返回值也相同;但x 或者y被赋值12、13、’12’的候id的返回值不同!由此可见Python是在给等号右边的数据分配内存空间,可以通过不同的变量来指向这个数据。也可通过不同变量可以指向相同的内存空间获得相同的值。

>>> x = 12

>>> y = 13

>>> x = y

>>> x13

>>> id(x)

10416504

>>> id(y)10416504

>>>

可以通过变量来改变它正指向的这块内存空间里的数据么?不可以!

>>> x = 12

>>> id(x)

10416516

>>> x = 15

>>> id(x)

10416480

由上边结果可见,并未改变12所在内存区里的值,而是又分配了一个内存空间给数据15,也就是说变量在被重新赋值以后指向的是另外内存一个地方,和C语言变量的区别在于C里的变量一直指向某地,C语言可以通过变量来改变它指向内存里的值,而Python 里变量变化的是它“指向”,可以直接认为Python里的变量等价于C 语言里的指针概念。因此C和Python里都有变量的概念,但两个语言的变量的“变”的含义不同!


http://www.niftyadmin.cn/n/1999891.html

相关文章

泡妞千万别泡貂蝉 嫁人千万别嫁刘备

泡妞千万别泡貂蝉 嫁人千万别嫁刘备 泡妞可以,但千万不要泡貂蝉   中国四大美女之一貂蝉,的确很有诱惑力,但只能欣赏,决对不能泡她。两个泡过他的男人,吕布被勒死了,董卓更惨&#xff0c…

python2初识

此为python2刚开始学习的笔记,比较杂乱python的安装python 标志符以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入;以双下划线开头的 __foo 代表类的私有成员&#…

python建立一个http请求_如何用Python写一个http post请求

展开全部可以参考如下三种方法:一、application/x-www-form-urlencodedimport urlliburl "http://www.example.com"body_value {"package": "com.tencent.lian","version_code": "66" }body_value urllib.ur…

三国大事年表

三国大事年表 184年2月 黄巾起义。  10月 张角病死。187年  曹操任东郡太守。189年9月 董卓废少帝刘辩为弘农王,立九岁的陈留王刘协为帝,是为献帝。  12月 曹操号召各镇诸侯共起讨伐董卓。190年1月 各路诸侯起兵反董卓。     董卓令李儒…

阿里云云计算ACP考试知识点(标红为重点)

详情见附件。。。。。。。。。。阿里云云计算专业认证考试(ACP)(ECS)什么是云服务器 ECS云服务器 Elastic Compute Service(ECS)是阿里云提供的一种基础云计算服务。使用云服务器 ECS 就像使用水、电、煤气…

mysql 内存 重启吗_生产环境mysql内存溢出重启简单分析

思路1.查看数据库日志2.查看慢查询3.查看系统日志4.查看监控2017-01-03 03:03:48 0 170103 03:03:45 mysqld_safe Number of processes running now: 0170103 03:03:45 mysqld_safe mysqld restarted --异常重启[Note] /usr/sbin/mysqld (mysqld 5.6.25-log) starting as pro…

管理员必会20条命令

1. curlcurl 用于传输一个 URL。可以使用这条命令用于测试应用程序的端点或与上游服务端点的连接。curl 还可用于检查你的应用程序是否能连接到其他服务,例如数据库,或检查您的服务是否处于健康的状态。举个例子,假如你的应用程序抛出一个 HT…

mysql如何设计索引_MySQL | 05 如何设计高性能的索引?

上回我们主要研究了为什么使用索引,以及索引的数据结构。今天带你了解如何设计高性能的索引。其中,有这么一个点,说的是 InnoDB 引擎中使用的是聚簇索引,其主索引的实现树中的叶子结点存储的是完整的数据记录,而辅助索…