《Python地理数据处理》——2.3 变量

简介:

本节书摘来自异步社区《Python地理数据处理》一书中的第2章,第2.3节,作者: 【美】Chris Garrard(加勒德) 更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.3 变量

除非你的脚本非常简单,否则运行时将需要某种方式来存储信息,这就是变量发挥作用的地方。想一想当你使用软件打开一个文件时发生了什么,不管它是什么样的文件,该软件都会显示一个打开对话框,你需要选择一个文件,然后单击“OK”按钮,随后该文件被打开。当单击“OK”按钮,选定的文件名称将被存储为一个变量,以便该软件知道什么文件被打开。即使你一生中从未编写过任何程序,在数学意义上你也可能会熟悉这个概念。回想一下代数课,其中根据x的值计算y的值,x变量可以是任何值,相应y的值也会随之而变化,类似的概念也适用于编程。你会使用许多不同的变量,或x’s,这将影响你脚本的结果。然而,这个结果可以是任何你想要的东西,也不局限于单一的y值。如果你的目标是计算一项统计数据,它可能是一个数字,也可以很容易地成为一个或多个全新的数据集。在Python中创建一个变量容易,给它一个名称和一个值即可。例如,将10的值赋给一个名为n的变量,然后将其输出:

>>> n = 10
>>> n
10

如果你使用过其他编程语言,如C++或java,可能想知道为什么不需要声明变量n为整型。Python是动态类型语言,这意味着在运行之前不会检查变量类型,你甚至可以更改存储在变量中的数据类型。例如,可以从一个整数切换到一个字符串,而没有人会指责你:

>>> n = 'Hello world'
>>> n
Hello world

虽然你可以存储任何你想要的变量而不用担心数据类型,但如果你尝试使用的方式与它存储的数据不一致,就会遇到麻烦。因为直到运行时才检查数据类型,直到脚本的某行被执行才发生错误,所以你不会事先得到任何警告。在脚本中出现的错误,也会同样在Python交互式窗口中出现,所以如果有什么不确定,可以在交互式窗口中测试例子。例如,你不能让字符串和整数相加,如果你尝试这样做,下面的例子将显示会发生什么:

>>> msg = n + 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly

记住变量n包含“hello world”,它不能和整数1相加。如果你正在使用Python 2.7版本,问题的原因也是一样的,但是错误消息会像这样:

TypeError: cannot concatenate 'str' and 'int' objects

注意,用一个等号给变量赋值。为了测试相等,需要使用双等号符号:

>>> n = 10
>>> n == 10
True

刚开始编程时,会觉得将可变的变量赋予一个固定值而不是暂时用一个定义好的名称来代替它是一种很好的方法。例如,你需要在脚本中打开一个文件,也许在第37行。当打开文件时,你可能更倾向于在37行上直接输入文件名。这肯定会有效,但是如果你事前就在脚本中定义一个可变变量来包含该文件名,并在第37行运用该变量,你会发现事后很容易改变。首先,这使得你更容易找到你需要改变的值,但更重要的是,更容易调整你的代码,以便你可以在更多的情况下使用它,而不是看起来像第37行代码这样:

myfile = open('d:/temp/cities.csv')

可以事先定义一个变量,然后在需要时使用它:

fn = 'd:/temp/cities.csv'
<snip a bunch of code>
myfile = open(fn)

刚开始会很难记住这样做,如果你必须调整代码去使用其他数据时,你会很庆幸已经如此做了。

相关文章
|
4天前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名
【4月更文挑战第22天】Pandas Python库提供数据排序和排名功能。使用`sort_values()`按列进行升序或降序排序,如`df.sort_values(by=&#39;A&#39;, ascending=False)`。`rank()`函数用于计算排名,如`df[&#39;A&#39;].rank(ascending=False)`。多列操作可传入列名列表,如`df.sort_values(by=[&#39;A&#39;, &#39;B&#39;], ascending=[True, False])`和分别对&#39;A&#39;、&#39;B&#39;列排名。
14 2
|
3天前
|
机器学习/深度学习 数据挖掘 网络架构
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
15 0
|
3天前
|
机器学习/深度学习 算法 数据挖掘
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-2
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
28 1
|
3天前
|
机器学习/深度学习 算法 算法框架/工具
数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
23 0
|
1天前
|
机器学习/深度学习 存储 监控
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
|
1天前
|
机器学习/深度学习 数据采集 算法
Python信贷风控模型:Adaboost,XGBoost,SGD, SVC,随机森林, KNN预测信贷违约支付|数据分享
Python信贷风控模型:Adaboost,XGBoost,SGD, SVC,随机森林, KNN预测信贷违约支付|数据分享
Python信贷风控模型:Adaboost,XGBoost,SGD, SVC,随机森林, KNN预测信贷违约支付|数据分享
|
1天前
|
JSON 数据可视化 定位技术
python_将包含汉字的字典数据写入json(将datav的全省数据中的贵州区域数据取出来)
python_将包含汉字的字典数据写入json(将datav的全省数据中的贵州区域数据取出来)
4 0
|
2天前
|
数据采集 数据可视化 数据处理
Python从入门到精通的文章3.3.1 深入学习Python库和框架:数据处理与可视化的利器
Python从入门到精通的文章3.3.1 深入学习Python库和框架:数据处理与可视化的利器
|
2天前
|
机器学习/深度学习 算法 Python
数据分享|Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户
数据分享|Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户
21 4
|
3天前
|
存储 Python
Python变量类型
Python变量类型
8 0