Python变量:创建、类型、命名规则和作用域详解

小万哥
• 阅读 174

变量

变量是用于存储数据值的容器。

创建变量

Python没有用于声明变量的命令。

变量在您第一次为其分配值时被创建。

示例

x = 5
y = "John"
print(x)
print(y)

变量不需要声明为特定类型,并且甚至在设置后可以更改类型。

示例

x = 4       # x的类型为int
x = "Sally" # 现在x的类型是str
print(x)

类型转换

如果要指定变量的数据类型,可以使用类型转换。

示例

x = str(3)    # x将变为'3'
y = int(3)    # y将变为3
z = float(3)  # z将变为3.0

获取类型

您可以使用type()函数获取变量的数据类型。

示例

x = 5
y = "John"
print(type(x))
print(type(y))

您将在本教程后面学到更多关于数据类型和类型转换的知识。

单引号还是双引号?

字符串变量可以使用单引号或双引号声明:

示例

x = "John"
# 与以下代码等效
x = 'John'

区分大小写

变量名区分大小写。

示例

这将创建两个不同的变量:

a = 4
A = "Sally"
# A不会覆盖a

变量名

变量可以具有短名称(如x和y)或更具描述性的名称(age、carname、total_volume)。Python变量的规则如下:

  1. 变量名必须以字母或下划线字符开头。
  2. 变量名不能以数字开头。
  3. 变量名只能包含字母数字字符和下划线(A-z、0-9和_)。
  4. 变量名区分大小写(age、Age和AGE是三个不同的变量)。
  5. 变量名不能是Python关键字。

示例

合法的变量名:

myvar = "John"
my_var = "John"
_my_var = "John"
myVar = "John"
MYVAR = "John"
myvar2 = "John"

示例

不合法的变量名:

2myvar = "John"
my-var = "John"
my var = "John"

请记住,变量名区分大小写。

多个单词的变量名

具有多个单词的变量名可能难以阅读。

有几种技巧可以使它们更易读:

驼峰命名法(Camel Case)

除第一个单词外,每个单词都以大写字母开头:

myVariableName = "John"

帕斯卡命名法(Pascal Case)

每个单词都以大写字母开头:

MyVariableName = "John"

蛇形命名法(Snake Case)

每个单词由下划线字符分隔:

my_variable_name = "John"

一次给多个变量赋值多个值

Python允许您在一行中为多个变量分配值:

示例

x, y, z = "Orange", "Banana", "Cherry"
print(x)
print(y)
print(z)

注意:确保变量的数量与值的数量相匹配,否则将会出错。

一个值分配给多个变量

您可以在一行中将相同的值分配给多个变量:

示例

x = y = z = "Orange"
print(x)
print(y)
print(z)

解包集合

如果您有一个列表、元组等集合中的值,Python允许您将这些值提取到变量中。这称为解包。

示例

解包一个列表:

fruits = ["apple", "banana", "cherry"]
x, y, z = fruits
print(x)
print(y)
print(z)

输出变量

Python的print()函数通常用于输出变量。

示例

x = "Python is awesome"
print(x)

在print()函数中,您可以输出多个变量,用逗号分隔:

示例

x = "Python"
y = "is"
z = "awesome"
print(x, y, z)

您还可以使用+运算符输出多个变量:

示例

x = "Python "
y = "is "
z = "awesome"
print(x + y + z)

请注意,在"Python "和"is "之后有空格字符,如果没有空格字符,结果将是"Pythonisawesome"。

对于数字,+字符作为数学运算符起作用:

示例

x = 5
y = 10
print(x + y)

在print()函数中,当您尝试使用+运算符将字符串和数字组合在一起时,Python会报错:

示例

x = 5
y = "John"
print(x + y)

在print()函数中输出多个变量的最佳方法是用逗号分隔它们,甚至支持不同的数据类型:

示例

x = 5
y = "John"
print(x, y)

全局变量

在函数之外创建的变量(如上面的所有示例)被称为全局变量。

全局变量可以被所有人使用,无论是在函数内部还是在函数外部。

示例

在函数之外创建一个变量,并在函数内部使用它:

x = "awesome"

def myfunc():
  print("Python is " + x)

myfunc()

如果您在函数内部创建了一个具有相同名称的变量,这个变量将是局部的,只能在函数内部使用。具有相同名称的全局变量将保持不变,仍然是全局的,并具有原始值。

示例

在函数内部创建一个与全局变量同名的变量:

x = "awesome"

def myfunc():
  x = "fantastic"
  print("Python is " + x)

myfunc()

print("Python is " + x)

global关键字

通常,当您在函数内部创建一个变量时,该变量是局部的,只能在该函数内部使用。

要在函数内部创建一个全局变量,您可以使用global关键字。

示例

如果使用global关键字,变量属于全局范围:

def myfunc():
  global x
  x = "fantastic"

myfunc()

print("Python is " + x)

此外,如果要在函数内部更改全局变量的值,也可以使用global关键字。

示例

要在函数内部更改全局变量的值,请使用global关键字引用该变量:

x = "awesome"

def myfunc():
  global x
  x = "fantastic"

myfunc()

print("Python is " + x)

最后

为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:

公众号搜索Let us Coding知乎开源中国CSDN思否掘金InfoQ简书博客园慕课51CTOhelloworld腾讯开发者社区阿里开发者社区

看完如果觉得有帮助,欢迎点赞、收藏关注

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
3年前
typeScript数据类型
//布尔类型letisDone:booleanfalse;//数字类型所有数字都是浮点数numberletdecLiteral:number6;lethexLiteral:number0xf00d;letbinaryLiteral:number0b101
Stella981 Stella981
3年前
Scapy 从入门到放弃
0x00前言最近闲的没事,抽空了解下地表最强的嗅探和收发包的工具:scapy。scapy是一个python模块,使用简单,并且能灵活地构造各种数据包,是进行网络安全审计的好帮手。0x01安装因为2020年python官方便不再支持python2,所以使用python3安装。!(https://oscimg.oschina.net/os
Wesley13 Wesley13
3年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
3年前
34.TCP取样器
阅读文本大概需要3分钟。1、TCP取样器的作用   TCP取样器作用就是通过TCP/IP协议来连接服务器,然后发送数据和接收数据。2、TCP取样器详解!(https://oscimg.oschina.net/oscnet/32a9b19ba1db00f321d22a0f33bcfb68a0d.png)TCPClien
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_