通过C学Python(1)关于语言、数值类型和变量

强类型语言,不可能出现“程序执行出错后仍可继续执行,并且该错误导致的问题使后续执行可能出现任意行为”这类错误,这类错误的例子,如C里的缓冲区溢出、Jump到错误地址。

弱类型语言,类型检查更不严格,如偏向于容忍隐式类型转换。例如C语言中int类型和double类型的隐式转换。(个人认为int型和指针型的自由转换,以及union中的一个int对4个char更能说明问题)

静态类型语言,在编译时就拒绝类型错误导致的问题

动态类型语言,在运行时才报出类型错误

C语言是弱类型、静态类型

python是强类型,动态类型

 

 

数值类型:

整型 int

C中整型数据按照内存占用有好多种,python里面只有一种

浮点型 float

C中有float和double两种,python里面只有一种

布尔型 bool

C中用宏TRUE和FALSE对应常量1和0,在python中True和False是属于单独的数据类型bool,但是内部实现依然是1和0,例如:1+True==2,1*False==0

复数型 (在python中用小写 j ,表示虚部,用其他的字母不行)complex

C中没有这个类型,需要自己定义一个结构体和一系列运算函数,但是C99/C++有添加这种数据类型。python中有这个数据类型,就可以很方便的进行复数运算

空类型 NoneType

C中用宏NULL表示空,对应常量0,在python中None是属于单独的数据类型NoneType,与常量0不同,不能与数值做运算,其实这也并不能算作数值类型

数值运算常用运算符:

+ - * %加、减、乘、取模,和C都一样
/ 除,即使是两个整型数据相除,得到的结果也可能是浮点数

// 整除,向下取整,和C语言中的整型相除效果一样,没有小数部分

** 乘方(幂),C对应的函数是pow,当然直接用乘方运算符用起来会更好看且易于理解

赋值运算符 :
= += -= *= /= //= 等...  和C的用法基本一致,python没有++,自增1要用+=1

变量:
Python的变量无需事先声明,无需指定类型,但是每个变量都是有类型的

Python中每个变量、常量都有一个id,可以通过内置函数id()来取得,通过这个函数可以看到一些特性:

实验一:a = 2  ,b = 2 ,这时分别查看id(a)、id(b)、id(2)可以发现,他们三个的值是一样的,就好像是三个指针指向了同一个地址,而这个地址上的数据就是2

实验二:a = 1 ,id(a) , a = 2, id(a) ,这时可以看到,a的id发生了变化,也就是说这两个a并不是同一个a了

通过这些现象来看,变量a、b并没有用独立的存储空间去存放值,而更像是指针,指向了一块内存区域,id()就是取出来目标地址,而在取变量a的值的时候,先通过id(a)找到目标地址,再把目标地址存放的数据取出来

经过我的测试实验,True\False\None的id都是固定的,整型数据中从-5到256的id也是固定的,符合实验一的现象,既分别给a和b赋同一个常量值,他们的id是一样的,但是如果查出这个范围,比如-6,进行下一个实验

实验三:a = -6,b = -6,这时id(a) == 2518190220080,id(b) == 2518190220496,两个变量的id不同,但是值相同,说明他们的值分别另外开辟了空间,存储了相同的值-6

实验四:在实验三的基础上,b=a,这时id(a) == 2518190220080,id(b) == 2518190220080,他们的id相同,指向了同一个地址。

经过实验,把-6换成浮点数、元组和列表,也符合实验三和实验四

实验五:a=[1,2],b=a,a.append(3),这时,id(a)和id(b)相同,并且b的值也变成了[1,2,3],这验证了上面说的,变量其实并没有存放变量值,而是存放了目标地址,取变量值的时候,先去目标地址,再把值取出来

原文地址:https://www.cnblogs.com/ikamu/p/8285283.html

时间: 2024-08-01 13:06:20

通过C学Python(1)关于语言、数值类型和变量的相关文章

5、python基本数据类型之数值类型

前言:python的基本数据类型可以分为三类:数值类型.序列类型.散列类型,本文主要介绍数值类型 一.数值类型 数值类型有四种: 1)整数(int):整数 2)浮点数(float):小数 3)布尔值(bool):只有两个值True和False 4)复数(complex):和数学中的复数一样由实部和虚部(j)组成(了解即可,学习自动化测试几乎用不到) 二.算数运算符 + 加,x+y - 减,x-y * 乘,两个数相乘或者返回一个被重复若干次的字符串 / 除,x/y % 取余 ,返回除法的余数 **

python基础复习-1-1文件类型、变量、运算符、表达式

文件类型: .py python源文件 由python解释器执行 .pyc python源码编译后生成的文件(字节代码) 编译方法: 源码文件中使用py_compile模块 import py_compile py_complie.compile('***.py') .pyo python源码优化编译后后文件 python -O -m compile ***.py (无需要源码中使用 compile模块) -O 表示优化 -m 表示模块 python 变量 变量是计算机内存中的一个区域,可以存储

分享《趣学Python编程》中文PDF+英文PDF+源代码

下载:https://pan.baidu.com/s/1E_5vhsYvZ3eAG5bbdzVbjg 更多经典电子书和源代码:http://blog.51cto.com/3215120 <趣学Python编程>中文PDF+英文PDF+源代码 中文版PDF,带目录和书签:英文版PDF,带目录和书签:中英文两版可以对比学习.配套源代码:经典书籍,讲解详细:<趣学python编程>语言轻松,通俗易懂,讲解由浅入深,力求将读者阅读和学习的难度降到最低.任何对计算机编程有兴趣的人或者首次接触

《趣学Python编程》中文PDF+英文PDF+源代码

下载:https://pan.baidu.com/s/1E_5vhsYvZ3eAG5bbdzVbjg 中文版PDF,带目录和书签:英文版PDF,带目录和书签:中英文两版可以对比学习.配套源代码:经典书籍,讲解详细:<趣学python编程>语言轻松,通俗易懂,讲解由浅入深,力求将读者阅读和学习的难度降到最低.任何对计算机编程有兴趣的人或者首次接触编程的人,不论孩子还是成人,都可以通过阅读本书来学习python编程. 其中中文版如图 原文地址:http://blog.51cto.com/48206

趣学python编程中文版 PDF 下载

下载地址: http://gqylpy/di/304 Python是一款解释型.面向对象.动态数据类型的高级程序设计语言.Python语法简捷而清晰,具有丰富和强大的类库,因而在各种行业中得到广泛的应用.对于初学者来讲,Python是一款既容易学又相当有用的编程语言,国内外很多大学开设这款语言课程,将Python作为一门编程语言学习. <趣学Python编程>是一本轻松.快速掌握Python编程的入门读物.全书分为3部分,共18章.第1部分是第1章到第12章,介绍Python编程基础知识,包括

Python从入门到精通之30天快速学Python视频教程

课程目录python入门教程-1-Python编程语言历史及特性.mkv python入门教程-2-Python编程语言初接触.mkv python入门教程-3-Python程序文件结构.mkv python入门教程-4-准备Python编程环境.mkv python入门教程-5-Python编程语言基础技术框架.mkv python入门教程-6-Python编程语言基础技术框架.mkv python入门教程-7-Python编程语言基础技术框架之print输出.mkv python入门教程-8

D10——C语言基础学PYTHON

C语言基础学习PYTHON--基础学习D10 20180906内容纲要: 1.协程 (1)yield (2)greenlet (3)gevent (4)gevent实现单线程下socket多并发 2.简单爬虫 3.select 4.IO多路复用 5.小结 6.练习 1 协程 协程又叫微线程,纤程.协程是一种用户态的轻量级线程.协程有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文.和栈保存到其他地方,在切换回来的时候回复先前保存的寄存器上下文和栈.协程能保存上一次调用时的状态.一个cpu支

D16——C语言基础学PYTHON

C语言基础学习PYTHON--基础学习D15 20180927内容纲要: 1.JavaScript介绍 2.JavaScript功能介绍 3.JavaScript变量 4.Dom操作 a.获取标签 b.标签操作 c.创建标签 d.提交表单 e.事件操作 f.事件的捕捉与冒泡 5.js语法分析 6.小结 7.练习 1 JavaScript介绍 JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言.同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功

学python的第一天

#Python之路,Day1 - Python基础1 转自金角大王 本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆