Python 学习笔记

太久不写python,已经忘记以前学习的时候遇到了那些坑坑洼洼的地方了,开个帖子来记录一下,以供日后查阅。

摘要:一些报错;为啥Python没有自增 ++ 和自减 --


0x01

  字符串的单双引号问题:

    Python不是JS,也不是Shell,单双引号在执行上没有任何差别。只不过字符串包含单(双)引号的手,包裹字符串的引号需要是双(单)引号。

0x02

  含参数的脚本调用:

    python filename.py arg1 arg2 ag3  ==> sys.argv   # sys.argv == ["filename.py", "arg1", "arg2", "arg3" ]

0x03

  "IndentationError: unindent does not match any outer indentation level" :

    很有可能因为你在一行代码的缩进里面混着用了空格和tab -- 建议写代码之前把编辑器的tab缩进替换成四个空格,这样就永远不会出现“混着用空格tab”的问题了。

    当然还有可能是你没对齐代码,比如本来用四个空格的缩进表示代码块,你有一部分代码块用的三个空格,也会报这个错。

0x04

  "NameError: name 'n' is not defined":

    针对input函数,这是一个Python2.7的报错。习惯了python3.x之后,我们不知道python2.x使用的 input() 函数和3.x使用的有所不同。

    **2.7**

    有两种 获取标准输入 的函数,他们分别是 "input()" 和 "raw_input()", 后者行为方式和现在使用的 input 函数相似,接受的所有内容均视为字符串,而前者则需要输入的时候符合编程规则,如下图所示

可以看出两种函数对不同输入的支持程度是不同的。

0x05 

  “SyntaxError: invalid character in identifier”:

    他会具体给你标出来那里引发的这个问题,如下所示:

     def test(user):
^
SyntaxError: invalid character in identifier

    你需要回到代码看看它标记出来的那个字符,你是不是用成了中文字符,这个问题尤其常见在冒号的使用上!

0x06

  Python Linux编程学到的知识们 (脚本地址:https://www.cnblogs.com/jackablack/p/10717727.html

  1.Python 没有自增自减!一种解释是Python对待变量的逻辑类似于指针,它将被赋予相同值的变量指向了相同的id,我觉得还是有一些道理的,如下引用:

https://stackoverflow.com/questions/3654830/why-are-there-no-and-operators-in-python/3654973

My understanding of why python does not have ++ operator is following: When you write this in python a=b=c=1 you will get three variables (labels) pointing at same object (which value is 1). You can verify this by using id function which will return an object memory address:
我针对为什么Python没有自增运算符的理解是这样的: 当你在Py里面写 a = b = c = 1的时候,你将会得到指向同一个对象(它的值为1)的三个变量(或称标签)。你可以通过使用 id() 函数来验证这一点,这个函数会返回一个对象的内存地址。

In [19]: id(a) Out[19]: 34019256 In [20]: id(b) Out[20]: 34019256 In [21]: id(c) Out[21]: 34019256

All three variables (labels) point to the same object. Now increment one of variable and see how it affects memory addresses:

上面三个变量都指向了同一对象,现在给其中某一个变量加上1,看一下它的内存地址发生了什么改变?

In [22] a = a + 1

In [23]: id(a)
Out[23]: 34019232 In [24]: id(b)
Out[24]: 34019256 In [25]: id(c)
Out[25]: 34019256

You can see that variable a now points to another object as variables b and c. Because you've used a = a + 1 it is explicitly clear. In other words you assign completely another object to label a. Imagine that you can write a++ it would suggest that you did not assign to variable a new object but ratter increment the old one. All this stuff is IMHO(In My Humble Opinion, 依我所见) for minimization of confusion.

你可以发现,变量a相较于变量b和c,现在指向了另一个对象。原因显然是你给a加了1。换言之你是给标签a赋了另一个对象。现在假设你能在Py里面写自增,那么你得到的是对旧的对象的增加,而不是赋给另一个对象,这一切都是为了减少理解上的麻烦(使逻辑更清晰)。

  

  2.python 脚本的执行,是在程序运行开始的时候确定的地址运行的,改换工作路径的方法是使用 os.chdir() 函数。使用 os.system("cd ./xxxx") 是无效的,它的有效期只有着一条命令而已,随着函数结束工作路径会回到函数开始的地址。

Python 学习笔记 - 不断更新!的更多相关文章

  1. Python学习笔记(day23更新)

    第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 等组成,只有硬件但硬件之间无法进行交流和通信. 1.2 操作系统 作用:操作系统用于协同 ...

  2. python学习笔记--随时更新

    # coding=GBK score = 90 if score >= 80: print("好") elif score >= 60: print("及格& ...

  3. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  4. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

  5. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  6. python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹

    python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...

  7. Python学习笔记(六)

    Python学习笔记(六) Ubuntu重置root密码 Ubuntu 16.4 目录结构 Ubuntu 命令讲解 1. Ubuntu重置root密码 启动系统,显示GRUB选择菜单(如果默认系统启动 ...

  8. Deep learning with Python 学习笔记(11)

    总结 机器学习(machine learning)是人工智能的一个特殊子领域,其目标是仅靠观察训练数据来自动开发程序[即模型(model)].将数据转换为程序的这个过程叫作学习(learning) 深 ...

  9. 近期Python学习笔记

    近期Python 学习笔记--一篇文入门python 作者:Pleiades_Antares(www.cnblogs.com/irischen) 写在前面的话 想学Python已经许久,一年多以前(应 ...

随机推荐

  1. Docker进阶之五:容器管理

    容器管理 一.创建容器常用选项 docker container --help 指令 描述 资源限制指令 -i, --interactive 交互式 -m,--memory 容器可以使用的最大内存量 ...

  2. [Vue] vue2.0

    vue实例 所有的 Vue 组件都是 Vue 实例,并且接受相同的选项对象 当一个 Vue 实例被创建时,它将 data 对象中的所有的属性加入到 Vue 的响应式系统中.当这些属性的值发生改变时,视 ...

  3. bootstrap tooltips在 angularJS中的使用

    使用bootstrap自带的提示控件,省去了不少事情 <div class="s2" ng-init="InitTooltip()"> <in ...

  4. 数据结构——Java实现顺序表

    一.分析 什么是顺序表?顺序表是指用一组地址连续的存储单元依次存储各个元素,使得在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中的线性表.一个标准的顺序表需要实现以下基本操作: 1.初始化顺序表 ...

  5. Editplus的扩展程序的删除

    好久没用Editplus,然后准备删除,结果发现有进程正在运行,删除不掉 ,于是,用软件管家删除 用软件管家删除结束之后,有残留文件,就是Editplus的扩展程序        1.于是找到Edit ...

  6. python的学习笔记01_2变量 常量 注释 用户交互 格式化输出

    变量是什么? 变量的作用  Variables are used to store information to be referenced and manipulated in a computer ...

  7. DVWA 黑客攻防演练(十四)CSRF 攻击 Cross Site Request Forgery

    这么多攻击中,CSRF 攻击,全称是 Cross Site Request Forgery,翻译过来是跨站请求伪造可谓是最防不胜防之一.比如删除一篇文章,添加一笔钱之类,如果开发者是没有考虑到会被 C ...

  8. jmeter使用TCP请求时,乱码问题,字符集设置

    不墨迹,直接上干货.(提示:UTF-8一个汉字占3个字节) TCP请求默认发的是GBK字符集,要想修改成UTF-8,只需要修改bin目录下的jmeter.properties文件,其中tcp.char ...

  9. MyDAL - .Where() & .And() & .Or() 使用

    索引: 目录索引 一.API 列表 1.Where .Where(Func<M, bool> func) 如: .Where( it => (it.Prop1>=条件1 &am ...

  10. python字典结构化数据

    https://www.cnblogs.com/evablogs/p/6692947.html dict: 键-值(key-value)对集合{key:value},查找速度极快,但浪费内存. 1 2 ...