
Python
Sany 何灿
这个作者很懒,什么都没留下…
展开
-
Geochemistry Pi 开源软件 - 数据挖掘自动化 - 浙大长期远程实习
Geochemistry π is a Python framework for data-driven geochemistry discovery. It provides an extendable tool and one-stop shop for geochemical data analysis on tabular data.原创 2023-02-10 20:54:19 · 1311 阅读 · 1 评论 -
python的type hint类型注解 常用总结 | Pandas, Numpy, Union, Optional
type hint 类型注解: ⽤于IDE(如Pycharm) 形参的类型提示和检查,能指定参数的类型,函数的返回类型。# 什么是type hint,及其作⽤参考链接: https://sikasjc.github.io/2018/07/14/typehint-in-python/# 以下我罗列了每⼀个项⽬组成员可能涉及到的类型,给了相应的例⼦# str,int,返回值# 函数foo的参数p1传⼊类型为str, 参数p2传⼊类型为int,函数的返回值类型为strdef foo(p1: str,原创 2022-03-10 22:59:49 · 2880 阅读 · 0 评论 -
pycharm的type hint显示: pandas.DataFrame, pandas.Series & numpy.ndarray 初步尝试
问题:如何在pycharm上显示pandas.DataFrame, pandas.Series 或numpy.ndarray的类型注解?解决方案:先使用pip install data-science-typesimport pandas, numpy# 函数foo的参数p1传⼊类型为pandas.DataFrame,参数p2传⼊类型为pandas.Series,# 参数p3传⼊类型为numpy.ndarraydef foo(p1: pandas.DataFrame, p2: panda原创 2022-03-10 22:53:55 · 1312 阅读 · 0 评论 -
使用unittest检测python函数是否有异常(raise)
问题:如果一个python函数没有return值,只有用raise判断是否有异常,如何使用unittest进行测试呢?解决方法:import unittestclass MyTestCase(unittest.TestCase): def test_foo(self): # Exception是函数foo用raise引起的异常类型,argum是传递给foo的参数 self.asserRaises(Exception, foo, argum)...原创 2020-12-20 21:37:57 · 1540 阅读 · 2 评论 -
import自己的python包(package) | 常见import方式及问题解决
问题:在import自己写的package时,总会出现没有module存在的错误!解决:(1)import方式不正确导致的错误方式一:import以上述Cars 这个package以及相应sub package是自己构建的包。要使它们成为一个包,它们都必须包含__init__.py文件,该文件可以是空白的,或者带有一些初始化代码。让我们假设汽车的所有模型都是模块。使用包有助于单独或整体导入任何模块。假设我们想得到Bmw i8。其语法如下:import Cars.Bmw.x5 当导入一个包或原创 2020-12-17 22:51:06 · 18286 阅读 · 0 评论 -
class详解 | python
一、类的成员–变量在类中变量成员分为两类:实例变量(字段)和类变量(静态变量)(1)实例变量:每一个实例都应该拥有自己的变量,实例变量是给对象用的。(2)类变量:类变量是属于类的,只有通过类名调用才能更改类变量的值。class Person: coutry="中国" #在此处申明类变量 def __init__(self,name ,age): #构造方法,在此处声明实例化变量 self.name=name #实例变量 self.age=age#原创 2020-12-17 21:16:09 · 390 阅读 · 0 评论 -
类的保护变量、私有变量 | python
(1)_xxx “单下划线” 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量,需通过类提供的接口进行访问;不能用’from module import *'导入(2)__xxx 类中的私有变量/方法名 (Python的函数也是对象,所以成员方法称为成员变量也行得通。)," 双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。(3)xxx 系统定义名字,前后均有一个“双下划线” 代表python里特殊方法专用的标识,如 i原创 2020-08-16 16:29:06 · 1366 阅读 · 0 评论 -
mac、windows | Python3 venv搭建轻量级虚拟环境的步骤(图文)
今天先聊一聊在windows/mac iOS系统下用venv搭建python轻量级虚拟环境的问题。使用venv搭建的虚拟环境同virtualenv搭建的虚拟环境,即venv可替代virtualenv虚拟环境优点1. 虚拟环境的作用是:搭建独立的python运行环境,不与其他产生冲突就是说,安装在虚拟环境里的所有包,均不会对环境外的其他包产生影响,反之,在虚拟环境下运行时只能调用虚拟环境中安装的包,不会调用外部的包。比如,mac系统自带python2,我搭建了虚拟环境安装python3,那么我在虚拟环转载 2020-07-14 08:01:34 · 1706 阅读 · 0 评论 -
解决方法 | UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0x89 in position 5: invalid start byte
如果在Jupyter Notebook 中想要用pandas.read_csv()打开如下csv文件:解决方法:import pandas as pddf = pd.read_csv('filename.csv', encoding='unicode_escape')原创 2020-07-01 22:10:49 · 1534 阅读 · 1 评论 -
函数注释常用风格 | Python
Code 1: 常用模板def func(arg1, arg2): """在这里写函数的一句话总结(如: 计算平均值). 这里是具体描述. 参数 ---------- arg1 : int arg1的具体描述 arg2 : int arg2的具体描述 返回值 ------- int 返回值的具体描述 参看 -------- otherfunc : 其它关联原创 2020-07-01 21:56:35 · 887 阅读 · 0 评论 -
Lambda() 和 Map() | Python
Lambda 是一种匿名函数,一般而言,Lambda 函数都比较小,它也不需要定义函数名。那么为什么需要匿名函数?简单而言,Lambda 最常执行一些直观的运算,它并不需要标准的函数定义,而且也不需要新的函数名再次调用。我们先定义一个简单的函数,它会算变量的平方并加 5:>>> def stupid_func(x):>>> return x**2 + 5现在我们可以试试 Lambda 匿名函数:>>> stupid_func = (l原创 2020-06-30 23:24:30 · 234 阅读 · 0 评论 -
单行条件语句 | Python
如果我们使用条件语句,那么最可能写成下面这个样子:>>> x = int(input())>>> if x >= 10:>>> print("Horse")>>> elif 1 < x < 10:>>> print("Duck")>>> else:>>> print("Baguette")但其实我们也可以把所有条件都写在 p原创 2020-06-30 20:06:48 · 721 阅读 · 0 评论 -
递推式构造列表 | Python
我们先定义一个简单的函数,它会算变量的平方并加 5:>>> def stupid_func(x):>>> return x**2 + 5如果我们希望将该函数应用到列表中的奇数项,那么不采用递推式构造列表的情况下,我们一般会写成以下形式:>>> my_list = [1, 2, 3, 4, 5]>>> new_list = []>>> for x in my_list:>>>原创 2020-06-30 19:32:23 · 466 阅读 · 0 评论 -
字符串运算 | Python
字符串本质上也是一种元组,但是字符串有很多「运算」方式。最直观的是字符串的+ 和* 运算,它们分别表示重复和连接。>>> my_string = "Hi Medium..!">>> print(my_string * 2)Hi Medium..!Hi Medium..!>>> print(my_string + " I love Python" * 2)Hi Medium..! I love Python I love Python此外,原创 2020-06-30 19:26:38 · 462 阅读 · 0 评论 -
append()和extend()的区别 | Python
Append将一个值添加到一个列表中,而extend将另一个列表的值添加到一个列表中。a = [1,2,3]b = [1,2,3]a.append(6)print(a)#=> [1, 2, 3, 6]b.extend([4,5])print(b)#=> [1, 2, 3, 4, 5]原创 2020-06-25 21:11:23 · 221 阅读 · 0 评论 -
enumerate() + zip() | Python
很多时候,在处理迭代器时,我们还需要保存迭代计数。Python 通过提供一个名为enumerate()的内置函数简化这一任务,允许在序列上迭代时跟踪索引。以下是一种不成熟的方法,然后是推荐方法:words = ['Hannibal', 'Hanny', 'Steeve']# 不成熟的方法index = 0for word in words: print(index, word) index += 1# 推荐方法for index, word in enumerate(words原创 2020-06-25 21:10:15 · 445 阅读 · 0 评论 -
异常管理 | Python
放过错误最终会留下隐式 Bug,并且这些 Bug 更难被发现, Python 提供了健壮的错误处理。根据 Python 文档:“即使一个语句或表达式在语法上是正确的,在试图执行它时也可能会导致错误。”特别是对于大型项目,我们不希望在耗时的计算后,代码崩溃。这就是异常管理的魅力所在。a = [1, 2, 3, "hey"] try: for i in a: b = 1 / (i - 1) print(b) except ZeroDivisionError as e: #除数原创 2020-06-25 20:44:55 · 305 阅读 · 0 评论 -
“is”和“==”的区别 | Python
is用来检查对象的标识(id),而==用来检查两个对象是否相等。通过一个例子说明。创建一些列表并将其分配给不同的名字。请注意,下面的b指向与a相同的对象:a = [1,2,3]b = ac = [1,2,3]下面来检查是否相等,你会注意到结果显示它们都是相等的。print(a == b)print(a == c)#=> True#=> True但是它们具有相同的标识(id)吗?答案是不。print(a is b)print(a is c)#=> True#=原创 2020-06-18 14:58:08 · 279 阅读 · 0 评论 -
在字符串插值的四种方法 | Python
1. 通过(%)操作符拼接>>>print('%s %s!' % ('Hello', 'World'))Hello World!2. 通过str.format()方法拼接>>>print('{} {}!'.format('Hello', 'World'))Hello World!通过这种方式拼接字符串需要注意的是字符串中{}的数量要和format方法参数数量一致,否则会报错。3. 通过F-strings拼接>>> s1 = 'Hell原创 2020-06-18 14:51:43 · 6482 阅读 · 0 评论 -
列表(list)和元组(tuple)的区别
列表是可变的。创建后可以对其进行修改。元组是不可变的。元组一旦创建,就不能对其进行更改。列表表示的是顺序。它们是有序序列,通常是同一类型的对象。比如说按创建日期排序的所有用户名,如[“Seth”, “Ema”, “Eli”]。元组表示的是结构。可以用来存储不同数据类型的元素。比如内存中的数据库记录,如(2, “Ema”, “2020–04–16”)(#id, 名称,创建日期)。...原创 2020-06-18 14:30:04 · 823 阅读 · 0 评论 -
区别 | 编译型语言和解释型语言
计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的程序若想被计算机运行,都必须将其转换成计算机语言,也就是机器码。而这种转换的方式有两种:编译、解释。编译型:在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。比如C语言、C++等为编译型语言。编译型语言的执行过程:源代码 ——&原创 2020-06-17 15:51:29 · 208 阅读 · 0 评论 -
IOPub data rate exceeded | 找不到NotebookApp.iopub_data_rate_limit该怎么办?
针对单个ipynb文件解决该问题如果你在jupyter_notebook_config.py中找不到NotebookApp.iopub_data_rate_limit=100000这一项,可用以下命令重新打开该ipynb文件,该命令的作用时暂时性的,不会永久解决jupyer notebook 问题。如果是Mac,在terminal上含有file.ipynb目录的文件处运行如下jupyter notebook --NotebookApp.iopub_data_rate_limit=10000000原创 2020-06-06 21:54:06 · 894 阅读 · 0 评论 -
计算程序运行时间|Python
Code 1:import datetimestart = datetime.datetime.now()# codeend = datetime.datetime.now()print(end - start).secondsCode 2:import timestart = time.time()# codeend = time.time()print(end - start)Code 3:import timestart = time.clock()# Python3原创 2020-06-06 19:54:44 · 284 阅读 · 0 评论 -
函数装饰器(Decorators)详解 | Python
装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。大多数初学者不知道在哪儿使用它们,所以我将要分享下,哪些区域里装饰器可以让你的代码更简洁。 首先,让我们讨论下如何写你自己的装饰器。这可能是最难掌握的概念之一。我们会每次只讨论一个步骤,这样你能完全理解它。一切皆对象def hi(name="yasoob"): return "hi " + nameprint(hi转载 2020-05-31 21:03:55 · 1831 阅读 · 0 评论 -
python | pickle模块基础知识 详解
持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象。通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Python 的 pickle以及其它机制)有一个总体认识。另外,还会让您更深一步地了解Python 的对象序列化能力。什么是持久性?持久性的基本思想很简单。假定有一个 Python 程序,它可能是一个管理日常待办事项的程序,您希望在多次执行这个程序之间可以保存应用程序对象(待办事项)。换句话说,您希望将对象存储在磁盘上,便于以后检索。这就是持久性。要达到这个目的,有几种方法,转载 2020-05-16 10:14:32 · 450 阅读 · 0 评论 -
远程获取数据解压保存到指定目录 | urllib、tarfile、os
import osimport tarfilefrom six.moves import urllibDOWNLOAD_ROOT = "https://raw.githubusercontent.com/ageron/handson-ml/master/"HOUSING_PATH = os.path.join("datasets", "housing")HOUSING_URL = DOWNLOAD_ROOT + "datasets/housing/housing.tgz"def fetch_原创 2020-05-11 22:47:17 · 207 阅读 · 0 评论 -
构建函数 — 保存matplotlib.pyplot生成图片 | os、pyplot.savefig
import osPROJECT_ROOT_DIR = "."CHAPTER_ID = "end_to_end_project"IMAGES_PATH = os.path.join(PROJECT_ROOT_DIR, "images", CHAPTER_ID)def save_fig(fig_id, tight_layout=True, fig_extension="png", resolution=300): path = os.path.join(IMAGES_PATH, fig_id +原创 2020-05-11 22:27:31 · 776 阅读 · 0 评论 -
def function(*args, **kwargs) 解析 + 参数列表的创建 | Python
一、def function(*param)—传递任意数量的实参有时候,由于预先不知道函数需要接受多少个实参,Python允许函数从调用语句中收集任意数量的实参。code 1:def make_pizza(*toppings): """打印顾客点的所有配料""" print(toppings)make_pizza('pepperoni')make_pizza('mushrooms'...原创 2020-04-15 15:48:06 · 957 阅读 · 0 评论 -
在函数中修改列表或禁止修改列表(code 练习) | Python
一、修改列表注意: 将列表传递给函数后,函数就可对其进行修改。在函数中对这个列表所做的任何修改都是永久性的。Code:def print_models(unprinted_designs, completed_models): """ 模拟打印每个设计,直到没有未打印的设计为止 打印每个设计后,都将其移到列表completed_models中 """ while unprinted...原创 2020-04-15 15:18:32 · 409 阅读 · 0 评论 -
函数实参(Argument)与形参(Parameters)的区别及应用(默认值与实参可选) | Python
Code:def greet_user(username): """显示简单问候语""" print(""Hello, " + username.title() + "!")greet_user('jesse')形参(parameter):在函数greet_user()的定义中,变量username是一个形参——函数完成其工作所需的一项信息。实参(argument):在代码gre...原创 2020-04-15 14:45:03 · 971 阅读 · 1 评论