记录遇到的Python陷阱和注意点】的更多相关文章

最近使用Python的过程中遇到了一些坑,例如用datetime.datetime.now()这个可变对象作为函数的默认参数,模块循环依赖等等. 在此记录一下,方便以后查询和补充. 避免可变对象作为默认参数 在使用函数的过程中,经常会涉及默认参数.在Python中,当使用可变对象作为默认参数的时候,就可能产生非预期的结果. 下面看一个例子: def append_item(a = 1, b = []): b.append(a) print b append_item(a=1) append_it…
本文关注的主要是python陷阱,具体而言,是指CPython,而且除非特别说明,所有代码示例都是在python2.7运行的. 我个人对陷阱的定义是这样的:代码看起来可以工作,但不是以你“想当然“”的方式.如果一段代码直接出错,抛出了异常,我不认为这是陷阱.比如,Python程序员应该都遇到过的“UnboundLocalError", 示例: >>> a=1 >>> def func(): ...     a+=1 ...     print a ... &g…
最近使用Python的过程中遇到了一些坑,例如用datetime.datetime.now()这个可变对象作为函数的默认参数,模块循环依赖等等. 在此记录一下,方便以后查询和补充. 避免可变对象作为默认参数 在使用函数的过程中,经常会涉及默认参数.在Python中,当使用可变对象作为默认参数的时候,就可能产生非预期的结果. 下面看一个例子: 1 2 3 4 5 6 7 def append_item(a = 1, b = []):     b.append(a)     print b     …
使用python也前前后后也一个月的样子,记录两个一直没注意的问题. 1. 元组的使用(拼接字符串) 直接看下面的代码: >>> kel = 'some','strings' >>> type(kel) <type 'tuple'> >>> print kel ('some', 'strings') 一直以为两个字符串加一起是一个字符串,从来没想过是一个元组,今天在写一个socket,发现一个报错内容为typeerror,然后检查相关的类型…
最近使用Python的过程中遇到了一些坑,例如用datetime.datetime.now()这个可变对象作为函数的默认参数,模块循环依赖等等. 在此记录一下,方便以后查询和补充. 避免可变对象作为默认参数 在使用函数的过程中,经常会涉及默认参数.在Python中,当使用可变对象作为默认参数的时候,就可能产生非预期的结果. 下面看一个例子: def append_item(a = 1, b = []):     b.append(a)     print b       append_item(…
一.流程控制之--while 循环 循环就是重复做同一件事,它可以终止当前循环,也可以跳出这一次循环,继续下一次循环. 基本结构(基本循环) while 条件: 循环体 示例 # 这是一个模拟音乐循环播放的代码 while True: print('画') print('桥头姑娘') print('四块五的妞') 终止循环 改变条件(根据上面的流程,改变条件,就会终止循环) 可以用关键字:break,来终止循环. 调用系统命令:quit().exit() 后面会讲到,不建议大家使用. 关键字:c…
一.is == id 用法 在Python中,id是内存地址, 你只要创建一个数据(对象)那么就会在内存中开辟一个空间,将这个数据临时加载到内存中,这个空间有一个唯一标识,就好比是身份证号,标识这个空间的叫做内存地址,也就是这个数据(对象)的id,那么你可以利用id()去获取这个数据的内存地址: name = 'Dylan' print(id(name)) # 4319709032 ​ == 是比较两边的数值是否相等,其反回的结果是 True 或 False. ​ is 是比较两边的内存地址是否…
对于自己学习python的目的比较明确——爬虫和量化. 目前找了一些资源进行学习,先进行量化方面的学习,爬虫滞后.目前的目标是“180天掌握尽可能多的量化能力”! 以后定时发送自己学习思考内容以作自己成长的记录!…
补充知识点 函数形参中默认参数的陷阱 针对不可变数据类型,它是没有陷阱的 def func(name, sex='男'): print(name) print(sex) func('Dylan') # 输出结果: Dylan 男 陷阱只针对默认参数是可变的数据类型 def func(name, a_list=[]): # a_list=[]不在全局名称空间里,也不在局部名称空间里,它在一个特殊的内存空间中 a_list.append(name) # 将实参传进来的 name 增加到 a_list…
一.生成器 初识生成器 生成器的本质就是迭代器,在python社区中,大多数时候都把迭代器和生成器是做同一个概念. 唯一的不同就是: 迭代器都是Python给你提供的已经写好的工具或者通过数据转化得来的,(比如文件句柄,iter([1,2,3]). 生成器是需要我们自己用python代码构建的工具.最大的区别也就如此了. 生成器的构建方式 在 python 中有三种方式来创建生成器: 通过生成器函数 通过生成器推导式 python内置函数或者模块提供(其实1,3两种本质上差不多,都是通过函数的形…
一.匿名函数 以后面试或者工作中经常用匿名函数 lambda,也叫一句话函数. 课上练习: # 正常函数: def func(a, b): return a + b print(func(4, 6)) # 10 # 匿名函数: func = lambda a, b: a + b print(func(11, 33)) # 44 # 写匿名函数:接收一个可切片的数据,返回索引为0与2的对应的元素(元组形式). func = lambda x: (x[0], x[2]) print(func('Dy…
python中有两个主要的循环for与while,其中针对这两个循环有两种不同的中断用法break与continue. 首先先看下面的循环代码: 1: for i in range(10):#变量i带入for循环,通过rang()函数进行0到10的循环 if i==7:#插入条件语句if..continue,当i==7时,进入条件进行判断 由于continue的作用退出当前循环,不执行下面的print(i)(这个是关键) continue print(i)#打印i 上面这个循环打印出来是0 1…
当前有shell个脚本/tmp/test.sh,内容如下: #!/bin/bashexit 11 使用Python的os.system调用,获取返回值是: >>> ret=os.system("/tmp/test.sh")>>> ret2816 查看Manual没有说明.网上找到解释如下: os.system(cmd): 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码,高位为脚本的退出状态码.如果我们需要获得…
.py python文本源码文件,也可以用python.exe直接运行 .pyw 也是python的文本源码文件,但是默认由pythonw.exe打开,而且不显示命令行窗口,带GUI的python代码可以使用这个,比如自带的idle.pyw .pyc 由.py文件编译生成的二进制文件,执行速度可能会快点,但是相对于.py文件体积上的减小并不是很明显,还有个缺点是不同的python版本生成的.pyc文件不通用! .pyo 这个也是由.py编译生成的二进制文件,暂时理解为相对于.pyc优化了一下的东…
每天刷开csdn的博客,看到一整个页面,其实对我而言,我只想看看访问量有没有上涨而已... 于是萌生了一个想法: 想写一个爬虫程序把csdn博客上边的访问量和评论数都爬下来. 打算通过网络各种搜集资料,自学写Python代码. 这次自学的历程,也打算及时的整理下来,发布在博客里. /******************这是程序员风格的分割线******************/ 2013.11.3_开工 据说Python并不难,看过了python的代码之后也觉得确实, 代码很清爽,相比起C/C+…
最近由于论文需要,急需搭建Tensorflow环境,16年底当时Tensorflow版本号还没有过1,我曾按照手册搭建过CPU版本.目前,1.7算是比较新的版本了(也可以从源码编译1.8版本的Tensorflow). 安装步骤: 不能急于求成,安装任何东西前都应该先阅读用户手册与FAQ,弄清软件依赖与安装步骤.对于Tensorflow来说,官网有时上不去,建议关注Tensorflow的GitHub(https://github.com/tensorflow/tensorflow),GitHub上…
一.啥是数据类型 ​ 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,"汉"是文字,否则它是分不清1和'汉'的区别的,因此,在每个编程语言里都会有一个叫数据类型的东东,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他.Python中常用的数据类型有多种,如下: >>整数型(int) ,字符串(str),布尔值(bo…
一.列表初识 列表是 Python 的基础数据类型之一,它是以''[ ]''的形式括起来的,每个元素用","隔开,属于容器型数据类型,他可以存放大量的.各种类型的数据. 基本格式 li = ['Dylan', 'yaoyao', 1234, True, (1212, '中文'), ['列表', 'qiantao', {'name':'Dylan'}]] 可以看到,列表内可以存放多种数据类型,或以嵌套列表,元组,字典,布尔值等. 列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存…
一.字典的初识 为什么要有字典 字典与列表同属容器型数据类型,同样可以存储大量的数据,但是,列表的数据关联性不强,并且查询速度比较慢,只能按照顺序存储. 什么是字典 先说一下什么叫可变与不可变的数据类型分类 不可变(可哈希)数据类型:int, str, bool, tuple. 可变(不可哈希)数据类型:list, dict, set. 字典是Python语言中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的 字典的基本格式 dic = {'Dylan': {'name':'Dyl…
文件操作的初识 用 python 代码对文件进行各种操作. 基本构成: 文件路径:path 打开方式:读.写.追加.读写.写读-- 编码方式:utf-8 / gbk / gb2312-- f = open('文件路径或者相对路',encoding='编码方式',mode='模式') # 格式构成 cotent = f.read() print(content) f.close() 代码解释: open: ​ 内置函数,open 底层调用的是操作系统的接口. f: ​ 变量,约定俗成的变量名有(f…
错误如下: E:\pargram>python Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information. >>&g…
从网上找到一个Python的学习视频,之前的环境都装好了,今天看的就是算术运算符和变量的命名 其中Python的除法直接就是 / %用于求余 其中还可以进行幂运算**    例如2 ** 3 = 8 *既可以是“乘”也可以用于字符串的拼接  例如‘-’*50 就代表着50个‘-’ python的标识符是区分大小写的 if语句当中时根据空格进行匹配的,if和else前面的空格数应该相同则二者匹配为一个条件语句所以使用的时候tab键与空格不要混用否则会出错 if语句与缩进的部分是一个完整的代码块 s…
在写代码时,总是遇到写着写着不知道怎么写了的情况,或者无法把自己的想法用程序表达出来,所以有时候我们需要建立一个自己的编程思路,对一个具体程序的编程有一个比较清晰的想法:因此我把自己的思路总结了一下,对多数的编程问题抽象为一些具体的步骤,使得编程问题变得具体化.想法未必具有普遍性,只是一个个人的编程思路. 一.抽象化模型 对于python的理解,首先是要明确语言是用来交流的,而编程语言是为了实现你所需要执行的功能的.python的学习,首先要明确它是一门语言,所以在开始敲代码前,你需要想清楚你要…
上班时间 只贴看到最厉害的答案 回头总结 http://stackoverflow.com/questions/12179271/python-classmethod-and-staticmethod-for-beginner @classmethod 帮助我理解公司一些代码 最重要的一点.开始我百思不得其解,为什么申明的有些类在没有实力化的情况下,直接进行调用都可以直接运行.后来发现了有类方法这种针对类使用的方法.可以直接调用使用.而且还有一点非常重要 我直接摘抄链接里面的话. cls is…
执行:yum install readline readline-devel…
http://www.tuicool.com/articles/VJZRRfn https://itchat.readthedocs.io/zh/latest/…
基础数据类型 str(字符串) str:补充方法练习一遍就行 s.capitalize() 首字母大写,其余变小写 s = 'dyLAn' print(s.capitalize()) # Dylan s.swapcase() 大小写翻转 s = 'dYLAN' print(s.swapcase()) # Dylan s.title() 每个单词首字母大写(单词之间可以是特殊字符或者空格或者数字) s = 'dylan is good man' print(s.title()) # Dylan I…
描述: 最开始在测试环境装了mysql8,用来作为airflow后端的metadata存储: 在装了mysql8之后,通过pip3安装了mysqlclient=1.3.14:但是安装过程是在单独的venv环境中安装的.系统的python3环境中并没有安装该库. 为了进行其他功能测试,将mysql8卸载,安装了mysql5.7.28.之后airflow运行不起来了,报错: libmysqlclient.so.21: cannot open shared object file: no such f…
ur"D:\work\结构化\CSV\useful\内容.csv" 报错 编码错误原因,当路径中有\u这种字串时,即使是包含在r"" 中也会进行转义,然后转义出错.…
title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[python] [TOC] 1.反射 反射:利用字符串的形式去对象(默认)中操作(寻找)成员 cat commons.py #!/usr/bin/env python #_*_coding:utf-8_*_ ''' * Created on 2016/12/3 21:54. * @author: Chin…