python函数

Python 深拷贝和浅拷贝

北城以北 提交于 2020-04-04 16:33:39
Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果。 下面本文就通过简单的例子介绍一下这些概念之间的差别。 对象赋值 直接看一段代码: will=["Will",28,["Python","C#","JavaScript"]] wilber=will print id(will) print will print [id(x) for x in will] print id(wilber) print wilber print [id(x) for x in wilber] print '*****************' will[0]='Wilber' will[2].append("CSS") print id(will) print will print [id(x) for x in will] print id(wilber) print wilber print [id(x) for x in wilber] 结果: 36589768 ['Will', 28, ['Python', 'C#', 'JavaScript']] [36564144L, 30898752L, 36589704L] 36589768 ['Will', 28, ['Python', 'C#', 'JavaScript']]

Python第十章-模块和包

Deadly 提交于 2020-04-04 14:47:52
模块和包 我们以前的代码都是写在一个文件中, 而且代码也比较短. 假设我们现在要写一个大的系统, 不可能把代码只写到一个文件中, 迫切想把代码写到不同的文件中, 并且能够在一个文件使用另一个文件中代码. 这个时候应该怎么做? 如果你有一个非常棒的函数, 想在多个程序中使用, 又不想 copy, 这个时候又应该怎么做? 为了解决上面的这些问题, python 提出了一个 moudle 的概念. 我们每定义一个 .py 文件, 其实就是定义了一个 moudle .在一个 moudel 中定义的函数,类都可以导入( import )到另外一个模块中, 也可以导入到主模块( main moudle )中. 一个文件就是一个模块, 在一个模块内可以定义变量, 函数, 类等, 也可以有合法的 python 语句. 文件名就是模块名(不包括扩展名 .py ). 我们可以通过一个全局变量 __name__ 来获取这个模块的名字, 当然获取到的是个字符串. 一、模块基本使用 1.1 定义模块 定义模块其实就是创建一个 .py 文件. python之父建议的的模块命名: 公共模块: 所有的字母小写, 不同的单词之间用下划线 _ 连接 内部模块: 用下划线 _ 开头, 其余与公共模块一样. 定义一个计算斐波那契数列前 n 项的模块 第 1 步: 创建一个文件 fibo.py , 相当于创建了一个模块

Python 天天美味(37) - 让python的unittest像gtest一样输出

落爺英雄遲暮 提交于 2020-04-04 12:21:18
Python自带的unittest已经很简单易用了,不过我一直不喜欢的是它的命令行输出,格式显得有点乱。而我比较喜欢的是gtest的命令行输出格式,用不同的颜色进行标识,整齐划一,非常明了。于是,我扩展一下Python的unittest模块,让它也能输出和gtest一样好看的命令行结果。 首先,我们先来看看unittest默认的命令行输出结果。这里,我先随便写两个测试案例,让其中一个通过,另外一个不通过,然后查看一下测试结果。 import unitest class FooTest(unittest.TestCase): def setUp(self): self.a = 1 def testPass(self): self.a = self.a + 1 self.assertEqual( 2 , self.a) def testFail(self): self.a = self.a + 1 self.assertEqual( 3 , self.a) main函数,调用unittest自己的TextTestRunner: if __name__ == ' __main__ ' : unittest.main() 输出的结果: 有点凌乱(当然,可能你并不觉得),好的,接下来开始实现一个自定义的TestRunner,让unittest输出和gtest一样,使用不同的颜色。

python 基础 02

夙愿已清 提交于 2020-04-04 10:39:44
1. 字符串操作 主要说说内建函数。 字符串类型,就像列表一样,可以进行切片,排序等等操作。 但是这里就专门说内建函数哦。 '''@Author: Fallen@Date: 2020-04-03 10:30:20@LastEditTime: 2020-04-03 15:33:44@LastEditors: Please set LastEditors@Description: 字符串内建函数@FilePath: \day02\字符串内建函数.py'''​l = "abcdif geheEdjfoaae ifXlji felkkNOFWIjsk"​#1.大小写相关# capitalize() title() istitle() upper() isupper() lower() islower()print(l.capitalize()) #第一个字母大写print(l.title()) # 每个单词首字母都大写print(l.upper()) # 全改成大写print(l.lower()) # 全改成小写print(l.isupper()) #判断是不是都是大写print(l.islower()) # 判断是不是都是小写​#2.查找替换相关# find() rfind() index() rindex() replace()a = l.find("a",0,len(l)-1)

Python中函数的默认参数问题

不羁的心 提交于 2020-04-04 08:43:44
前几天,运营反馈了一个BUG,某些数据在写入数据库后,其时间字段出现异常,与当前时间相差较多。 由于代码是不是我写的,所以开始一遍阅读代码一遍排查问题。 在主流程中,仅仅发现了一个对时间赋值的语句,并且赋值使用的是data.CreateTime=int(time.time())这样的形式,应该没有问题。 在别的地方没有找到对该字段赋值的操作,于是想看看这个类是不是自身有什么方法会修改时间字段。 最终在类初始化函数中找到了这样的内容 1 class Data(): 2 def __init__(a, b=None, CreateTime=int(time.time())): 3 self.a = a 4 self.b = b 5 self.CreateTime = CreatTime 问题就出现在这里,在Python官方文档中有这么一句话: Default parameter values are always evaluated when, and only when, the “def” statement they belong to is executed. https://docs.python.org/3/reference/compound_stmts.html 意思是,默认参数始终在且仅在函数定义时赋值一次,所以上面的代码造成的问题是

06-局部变量和全局变量

守給你的承諾、 提交于 2020-04-04 06:58:43
局部变量:在函数内部定义的变量,只是在当前函数中使用,在其他函数就不行 In [1]: def test1():    #定义一个test1函数 ...: a = 100  #赋值 ...: In [2]: def test2():    #定义一个test2函数 ...: print("a=%d"%a)  #打印 ...: In [4]: test1()  #调用test1函数,因为没有return,所以结果为空 In [5]: test2()  #调用test2函数,报错 --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-5-35ebc1c532fc> in <module>() ----> 1 test2() <ipython-input-2-d9ea9e4cdd20> in test2() 1 def test2(): ----> 2 print("a=%d"%a) 3 NameError: name 'a' is not defined  #表示a没有定义,a是在test1函数中定义的局部变量 全局变量:在函数外定义,在任何函数里都能使用 In [1]:

Python_面向过程_内置函数

余生颓废 提交于 2020-04-04 06:57:58
--内建函数   abs 绝对值函数   round 四舍五入 (n.5 n为偶数则舍去.5 n为奇数,则进一!)   sum 计算一个序列得和   max 获取一个序列里边的最大值   pow 计算某个数值的x次方   range 产生指定范围内的数据的可迭代对象   bin 将10进制数据转化为二进制   oct 将10进制数据转化为八进制   hex 将10进制数据转化为16进制   chr 将ASCII编码转换为字符   ord 将字符转换为ASCII编码   eval 将字符串当作python代码执行   repr 不转义字符输出字符串   input 接受输入字符串 # 绝对值函数 a = -14 print(abs(a)) # 四舍五入 num = 3.2 # 3 num = 3.7 # 4 num = 4.9 # 5 num = 3.8 # 4 num = 4.5 # 4 num = 7.5 # 8 """    n.5 奇进偶不进 只能是n.5的时候 符合条件 """ print(round(num)) # 计算一个序列得和 listvar = [1,2,34,6,7] res = sum(listvar) print(res) # 获取一个序列里边的最大值 listvar = [77,12,-4,0,23] res = max(listvar) print

一些简单的python例子

﹥>﹥吖頭↗ 提交于 2020-04-04 06:11:39
1.【背景】 最近,派大星想要减肥,他决定控制自己的饮食,少吃一点蟹黄堡。 海绵宝宝为了帮助好朋友派大星,和派大星一起制定了一个饮食游戏。 游戏规则如下: 如果派大星一天吃超过40个蟹黄堡,就要给海绵宝宝100块; 如果派大星一天吃小于等于40个的蟹黄堡,海绵宝宝就给派大星100块。 【题目】 请你写出一段代码: 当输入派大星一天吃的蟹黄堡数量时,可以打印出这天该派大星给海绵宝宝钱,还是海绵宝宝给派大星钱。 提示: 1.用input() 函数获得派大星吃的蟹黄堡的数量。 2.用int() 函数把字符串转换为数字。 3.然后把这个数字和40作比较。 4.使用if...else... 语句。 p =int(input("输入派大星今天吃的汉堡个数")) if p<40 : print("海绵宝宝给派大星100块") else : print("派大星给海绵宝宝100块") 2.很多人不喜欢数字4,因为觉得有点不吉利。 请你使用while...依次让计算机打印出1、2、3、5、6、7这几个数字,可是呢,到了4的时候,避开不显示。 提示: 1.设置一个变量n为0,然后用某个条件开启循环。 2.每一次循环都让n+1。 3.避开数字4可以使用条件判断if,然后打印数字。 a=0 while a<7 : a += 1 if a == 4: continue else :print(a) 3

Debian Linux下的Python学习——控制流

青春壹個敷衍的年華 提交于 2020-04-04 05:58:26
python中有三种控制流语句: if 、 for 和 while 。 1. if语句用法( if..elif..else) 代码: 运行: 注意 : raw_input 函数要求输入一个字符串 ,int 把这个字符串转换为整数 2.for语句用法 (for ... else) 代码: 运行: 注: else 部分是可选的。如果包含else,它总是在 for 循环结束后执行一次,如果遇到 break 语句,else就 不会执行 。 range(0,10,2)生成一个数的序列表, 步长为2,不包含10. 3.while语句用法(while..else) 代码: 运行: 注: else 部分是可选的。如果包含else,它总是在 while 循环结束后执行一次,如果遇到 break 语句,else就 不会执行 。 来源: https://www.cnblogs.com/greenteaone/archive/2012/10/30/2745980.html

Python学习之路--内置函数

岁酱吖の 提交于 2020-04-04 02:03:35
作用域相关 locals()、globals()# print(locals())# 返回本地作用域中的所有名字# print(globals()) #返回全局作用域中的所有名字# 迭代器.__next__()#next(迭代器)# 迭代器 = iter(可迭代的)# 迭代器 = 可迭代的.__iter__()# print('__next__' in dir(range(1,11,2)))# dir 查看一个变量拥有的方法# print(dir([]))#调用相关callable#变量 查看 callable()是否是个函数# print(callable(print))# a = 1# print(callable(a))# help 查看方法及其用法# help(str)#模块相关#import time# t = __import__('time')# print(t.time())#方法属于数据类型的变量,就用调用#如果某个方法不依赖于任何数据类型,就直接调用 -- 内置函数 和 自定义函数# 文件操作相关open()# f = open('file.py')# print(f.writable())# print(f.readable())# 内存相关 id()hash()# print(hash(123))# print(hash('dsf'))# print