当前位置: 首页 > news >正文

《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)

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

相关文章:

  • 只能使用数组初始值设定项表达式为数组类型赋值。请尝试改用新的表达式
  • 《Total Commander:万能文件管理器》——12.3.高人高见
  • 在C#中应用哈希表(Hashtable)
  • 《Python数据可视化编程实战》——5.2 创建3D柱状图
  • c#.net中参数修饰符ref,out ,params的区别
  • 《JavaScript设计模式》——9.10 Factory(工厂)模式
  • 以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解
  • webgis实现技术分析
  • 《Oracle数据库性能优化方法论和最佳实践》——第3章 流程分析之数据库登录流程 3.1 数据库登录导致业务系统性能恶化案例分享...
  • 《Cisco BGP-4 命令与配置手册》——导读
  • 《Tableau 8权威指南》—— 导读
  • 《Python和Pygame游戏开发指南》——2.8 关于函数、方法、构造函数和模块中的函数(及其差别)的一些提示...
  • DataFormatString 属性语法
  • 《树莓派渗透测试实战》——1.6 树莓派的优点和缺点
  • 在HttpHandlers中使用Session
  • C# 免费离线人脸识别 2.0 Demo
  • centos安装java运行环境jdk+tomcat
  • docker-consul
  • HTML5新特性总结
  • mysql 数据库四种事务隔离级别
  • NSTimer学习笔记
  • OSS Web直传 (文件图片)
  • python3 使用 asyncio 代替线程
  • uni-app项目数字滚动
  • Vue小说阅读器(仿追书神器)
  • 老板让我十分钟上手nx-admin
  • 盘点那些不知名却常用的 Git 操作
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 我看到的前端
  • 详解NodeJs流之一
  • 项目管理碎碎念系列之一:干系人管理
  • 从如何停掉 Promise 链说起
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • #include<初见C语言之指针(5)>
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (1)STL算法之遍历容器
  • (52)只出现一次的数字III
  • (C语言)fgets与fputs函数详解
  • (c语言)strcpy函数用法
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (二)pulsar安装在独立的docker中,python测试
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (离散数学)逻辑连接词
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (十八)SpringBoot之发送QQ邮件
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转) Android中ViewStub组件使用
  • (转)jdk与jre的区别
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET 设计模式初探
  • .net 验证控件和javaScript的冲突问题