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. 【大数据安全】CDH集群禁用Kerberos

    在调试Kerberos的时候可能会有需要禁用的场景.以下是各组件禁用Kerberos的相关配置. 环境 CDH版本:5.11.2 Linux版本:7.4.1708 Docker版本:Docker ve ...

  2. Linux高级命令进阶(week1_day2)--技术流ken

    输出重定向 场景:一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术. >:覆盖输出,会覆盖掉原先的文件内容 ...

  3. js对象数组(JSON) 根据某个共同字段 分组

    首先判断 var arr = [ {"id":"1001","name":"值1","value": ...

  4. react 脚手架 立即可以写业务 react + react-router-dom + less + axios + antd

    https://github.com/cynthiawupore/wq-cli

  5. 【SpringBoot笔记】SpringBoot如何正确关闭应用

    关闭Spring Boot应用程序,我们可以通过OS命令kill -9 进程ID 实现将进程杀死.但是,有没有一种更好的方式,比如通过REST请求实现?Spring Boot Actoator提供了实 ...

  6. ASP.NET Zero--基础设施

    基础设施 启动类 ASP.NET Core从应用程序中的Startup类初始化.我们在这个类中配置所有库(包括ABP).我们建议您先检查此课程.它也被集成到 OWIN.所以,你可以在这里添加OWIN中 ...

  7. Mysql创建和删除数据库

    很久没有使用命令行操作Mysql,百度搜罗,重新整理,加强记忆,便于查询. 以下命令均在win7,64位操作系统下,cmd命令行操作: 一.创建1个Mysql 数据库 方法1:1. cmd下输入:my ...

  8. CG-CTF simple-machine

    运行一下,输入flag: 用ida打开: input_length和input_byte_804B0C0为重命名的变量:现在一个个看调用的函数. sub_8048526(): 这个函数使用了mmap分 ...

  9. 在Windows7中的DPI与主题的问题

    测试环境Windows7x64,vb6.0 测试在XP系统下,DPI计算似乎没问题 Screen.TwipsPerPixelX=1440/DPI=1440/96=15Screen.TwipsPerPi ...

  10. mstsc远程连接发生身份验证错误要求的函数不受支持

    在win7电脑上使用远程连接连接一台服务器时,出现发生身份验证错误要求的函数不受支持的错误,原因是本地组策略配置错误,如下图: 解决办法: 进入windows命令行模式输入命令: 会弹出本地策略组编辑 ...