Python中的变量和常量
本文主要介绍Python中的变量和常量,包括变量的命名规范,使用注意事项
-------------- 完美的分割线 ---------------
1.变量
1.1.变量理解
1)什么是变量
变量即变化的量,核心是“变”与“量”二字,变即变化,量即衡量状态。
完整的变量包括:变量名,等号,变量值
对于计算机,变量可以看做是一种存放信息的容器,用于存储在计算机程序中需要引用和操作的信息。
对于人,提供一种用描述性的名称对数据进行标记的方法,这样我们写的程序就可以更清楚地被读者和我们自己理解。
Python的变量不需要特别的声明,数据类型是Python自动决定的,可以直接输入
拓展知识:
变量的声明、定义、赋值和初始化有什么区别?
变量声明或定义:在环境中指定一个变量的名字。代表在内存中开辟一块区域。
赋值:销毁一个变量原来的值,并赋予一个新值。相当于改变了一个变量的状态。更改内存区域里的值。
初始化:一个声明后尚未初始化的变量一个有意义的初始值。即开辟内存区域时赋的值。不指定的话开辟时赋该类型的默认值。
注意:应注意区分初始化和赋值,在初始化之前不应该允许对变量进行赋值操作。
2)为什么要有变量
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态以及状态的变化。
3)何时需要用到变量?
一段程序或者数值需要在后面经常用到就可以用变量
1.2.变量的定义(创建)及命名规范
1)变量名要具有描述性的作用,要写的简洁直观易懂,且不要太长
2)变量名只能是字母、数字或下划线的任意组合,且不能以数字开头,可以下划线开头。
3)变量名可以用中文和拼音,但是尽量不要这样定义
4)以下关键字不能声明为变量名(被系统占用)
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
5)变量定义的等号左右建议用空格隔开(有无空格效果相同)
6)有两种定义方式:驼峰体和下划线
实例:
studentNumber = 30 # 驼峰体,java,asp开发人员常用
student_number = 30 # python常用这种的,下划线连接词组
注意区分:
1)定义函数用小写字母
def sayhi # 全小写
2) 定义类用驼峰体
class LuffyCity # 驼峰体
1.3.变量的多行赋值(格式化输出)
注释符号的其他应用---多行打印
msg = '''
name1 = "ddd"
name2 = name1
'''
print (msg,name1,name2)
--->
name1 = "ddd"
name2 = name1
bbb aaa
<---
1.4.Python中变量的修改和回收
如果你想让a存储不同的数据,你不需要删除原有变量就可以直接赋值。
1)直接重新赋值,相当于取消变量名与变量值的关系
a = 1.3
print(a,type(a))
--->1.3 <class 'float'>
2)删除变量delete
del aaa
3)超时清理
python有自己的内存回收机制,每隔一段时间,检查没有变量名的变量值,进行清理,一般不用担心内存会变满
4)用变量为变量赋值会涉及到变量的二次赋值问题
name1 = "aaa"
name2 = name1
print (name1,name2 )
--->aaa aaa
name1 = "bbb"
print (name1,name2 )
--->bbb aaa
# 结论:
用变量name1给变量name2赋值,name1只是将他自己变量的值交付给name2,赋完值之后name2获取到新的值,
之后他们俩就没有关系了,此时无论name1如何变化也不会影响name2的值,因为”name2 = name1“并不是建立name1和name2的关系
1.5.变量的其他知识
定义变量会产生id,type,value等信息
1)等号比较的是变量的value值
2)is比较的是变量的id值
3)id相同的两个变量,代表占用的同一块内存空间,所以其type和value必定相同
4)两个变量的value相同,那么type肯定相同,但id可能不同,如下
x="I'm 18"
y="I'm 18"
id(x)
--->139641415263432
id(y)
--->139641415263488
x == y
--->True
x is y
--->False
拓展知识:小整数池
1)在交互式模式下
Python实现int的时候有个小整数池。为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被GC回收,每创建一个-5到256之间的整数,都是直接从这个池里直接拿走一个值,例如
y=4
id(y)
--->4297641184
x=3
x+=1
id(x)
--->4297641184
2)在pycharm中
在pycharm中运行python程序,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究
2.常量:不变的量
2.1.什么是常量?
全部都大写用于表示常量
例如:PIE = 3.1415926...
2.2.常量和变量区分
1)大写字母用于表示常量,小写字母用于表示变量,
2)在Python中没有一个专门的语法代表常量,所有的变量都是可变的,程序员约定俗成用变量名全部大写代表常量,常量也可以修改,但不建议
3)在c语言中有专门的常量定义语法,const int count = 60;一旦定义为常量,更改即会报错
拓展知识:在linux下声明变量
在linux下声明变量:变量名=变量值, “=”左右不能有空格,使用“$变量名”进行调用
而python中没有严格规定,空格可有可没有,建议等号左右加空格
# 完毕,呵呵呵呵
Python中的变量和常量的更多相关文章
- Python基础-2 变量与常量
变量与常量 变量:在程序运行过程中,值会发生变化的量 常量:在程序运行过程中,值不会发生变化的量 无论是变量还是常量,在创建时都会在内存中开辟一块空间,用于保存它的值. 这里有一点需要注意的是,在py ...
- Python基础部分:5、 python语法之变量与常量
目录 python语法之变量与常量 一.什么是变量与常量 1.什么是变量 2.什么是常量 二.变量的基本使用 1.代码中如何记录事物状态 2.变量使用的语法结构与底层原理 3.变量名的命名规范 4.变 ...
- PHP中的变量与常量详解
几乎所有的编程语言都会涉及到变量和常量这两个概念,PHP也不例外.本节将介绍PHP语言中的变量和常量的应用方法. 一.什么是变量和常量 在程序执行的过程中,变量存储的值可以随时改变,而常量存储的值是不 ...
- python中的变量和数据类型
一.变量定义:变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字. 二.变量命名规则: 1. 变量名由字母.数字.下划线组成 2. 数字不能开头 3. 不可 ...
- Python中的变量、引用、拷贝和作用域
在Python中,变量是没有类型的,这和以往看到的大部分编辑语言都不一样.在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可.但是,当用变量的时候,必须要给这个变量赋值:如果只写一个变量,而没 ...
- TensorFlow中的变量和常量
1.TensorFlow中的变量和常量介绍 TensorFlow中的变量: import tensorflow as tf state = tf.Variable(0,name='counter') ...
- Python 中的变量
Python采用基于值得内存管理模式,赋值语句的执行过程是:首先把等号右侧标识的表达式计算出来,然后在内存中找一个位置把值存放进去,最后创建变量并指向这个内存地址.Python中的变量并不直接存储值, ...
- Python中的变量引用对象需注意的几点
Python中的变量引用对象需注意的几点 分类:Python (55) (0) 普通引用: Python中,变量的作用仅仅是一个标识,只有赋值后才被创建,它可以引用任何类型的对象,而且在引用之前必须 ...
- PHP中的 变量 与 常量 详解
几乎所有的编程语言都会涉及到变量和常量这两个概念,PHP也不例外.本节将介绍PHP语言中的变量和常量的应用方法. 一.什么是变量和常量 在程序执行的过程中,变量存储的值可以随时改变,而常量存储的值是不 ...
随机推荐
- POJ2992:Divisors(求N!因子的个数,乘性函数,分解n!的质因子(算是找规律))
题目链接:http://poj.org/problem?id=2992 题目要求:Your task in this problem is to determine the number of div ...
- PAT 1053 Path of Equal Weight[比较]
1053 Path of Equal Weight(30 分) Given a non-empty tree with root R, and with weight Wi assigned t ...
- ReactNative Ios报出 'React/RCTBundleURLProvider.h' file not found错误
我在创建react-native项目时 npm了一个第三方库 结果一打开 xcode 竟然报错 React/RCTBundleURLProvider.h' file not found: 然后 我 ...
- #C++初学记录(阶乘#递归)
练习题目三 用递归进行阶乘 运行代码 #include<iostream> using namespace std; int f(int n); int n; int main() { c ...
- 2016-2017 ACM-ICPC CHINA-Final Solution
Problem A. Number Theory Problem Solved. 水. #include<bits/stdc++.h> using namespace std; ; typ ...
- jquery实现ajax跨域请求
1.跨域问题: 是因为浏览器的同源策略是对ajax请求进行阻拦了,但是不是所有的请求都给做跨域,像是一般的href属性,a标签什么的都不拦截. 如: 项目一:p1.html <body> ...
- Entity Framework Code First级联删除(转)
使用Data Annotations: 如果我们要到一对主从表增加级联删除,则要在主表中的引用属性上增加Required关键字,如: public class Destination { public ...
- docker 容器目录挂载 | 进出容器
docker run --name wnginx -d -p 9001:80 -v /home/www:/usr/share/nginx/html nginx --name 别名 -d ...
- SQL Server2008创建数据库语法
use mastergo if exists(select * from sys.databases where name='MySchool') drop database MySchool -- ...
- linux及安全期中总结——20135227黄晓妍
Linux及安全期中总结 黄晓妍 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...