python核心----内建属性和标准模块

内建属性

常用专有属性说明触发方式
_init_构造初始化函数创建实例后,赋值时使用,在_new_
_new_生成实例所需的属性创建实例时
_class_实例所在的类实例._class_
_str_实例字符串表示,可读性print(类实例), 如果没有实现,使用repr结果
_repr _实例字符串表示,准确性类实例 回车 或者 print(repr(类实例))
_del_析构del删除实例
_dict_实例自定义属性vars(实例,_dict_)
_doc_类文档,子类不继承help(类或实例)
_getattribute_属性访问拦截器访问实例属性时
_bases_类的所有父类构成元素类名._bases_
a = helloword
a # 调用的是repr方法
print(a) # 调用的是str方法

_getattribute_方法例子

class Itcast(object):
    def __init__(self, subject1):
        self.subject1 = subject1
        self.subject2 = 'cpp'
    # 属性访问时拦截器,打log,用于制作访问日志
    def __getattribute(self,obj):
        if obj == 'subject1':
            print('log subject1')
            return 'redirect python'
        else: # 测试时注释这两行,将找不到subject2
            return object.__getattribute__(self, obj)
    def show(self):
        print('this is  Itcast')

s = Itcat('python')
print(s.subject1)
print(s.subject2)

结果为:

log subject1
redirect python
cpp

只要访问属性,就会首先调用_getattribute_方法
方法名也是一条属性,方法名指向方法函数

range函数

range(stop) -->list of integers
range(start, stop, step) -->list of integers
start:计数从start开始。默认是0,range(5) == range(0, 5)
stop:到stop结束,但不包括stop。range(0, 5) = [0,1,2,3,4]
seep:每次跳跃的间距,默认为1

map函数
map函数会根据提供的函数对指定序列做映射

map(...)
    map(function, sequence,sequence,...) ->list

function是一个函数
sequence是一个或多个序列,取决于function需要几个参数
返回值是一个list
参数序列中的每一个元素分别调用function函数,返回包含每次function函数返回值的list

# 函数需要一个参数
map(lambda x:x*x, [1, 2, 3])
# 结果为[1, 4 ,9]
# 函数需要两个参数
map(lambda x, y: x+y, [1, 2, 3], [4, 5, 6])
# 结果为[5, 7, 9]

def f1(x, y):
    return (x, y)
l1 = [0, 1, 2, 3]
l2 = ['sun', 'm', 'n', 'x']
l1 = map(f1, l1, l2)
print(list(l3))
# 结果为[(0, 'sun'),(1, 'm'),(2, 'n'),(3, 'x')]

filter函数
filter函数会对指定的序列进行过滤操作

filter(...)
    filter(function or None,sequence) ->list,tuple,or strig
function:接收一个参数,返回值为True或False
sequence:接收一个序列,可以是list,tuple,or string1

filter函数会对序列参数sequence中的每个参数调用function函数,最后返回的结果包含调用结果为True的元素,返回值的类型跟sequence的类型相同

filter(lambda x:x%2, [1, 2, 3, 4])
结果为:[1, 3]

reduce函数
reduce函数:reduce函数会对参数序列中的元素进行积累

reduce(...)
    reduce(function, sequence, initiall) ->value
function是一个函数
sequence可以是list,tuple or string
initial:固定初始值

reduce依次从sequence中取一个元素,和上一次调用function的结果做参数再次调用function。第一次调用function时,如果提供initial参数,会以sequence中的第一个元素和initial作为参数调用function,否则会以sequence中的前两个元素做参数调用function。注意:function函数不能为None

reduce(lambda x, y:x+y, [1, 2, 3, 4])
结果为: 10
reduce(lambda x, y:x+y, [1, 2, 3, 4], 5)
结果为: 15

sorted函数

sorted(...)
    sorted(iterable, cmp=None, key=None, reverse=False) -> new sorted list

sorted([1,4,2,6,3,5])
[1,2,3,4,5,6]
sorted([1,4,2,6,3,5], reverse=True)
[6,5,4,3,2,1]

functools模块

查看functoools模块中所有的函数

import functools
dir(functools)

partial函数(偏函数)
把一个函数的某些参数设置默认值,返回一个新的参数,调用这个函数会更简单

import functools

def showarg(*arg, **kw):
    print(arg)
    print(kw)

p1 = functools.partial(showarg, 1, 2, 3) # 返回的是一个新函数的引用,新函数还调用showarg函数,但是默认给函数传1,2,3
p1()
p1(4, 5, 6)
p1(a='python', b='cpp')

p2 = functools.partial(showarg, a=3, b='linux')
p2()
p2(1, 2)
p2(a='python', b='itcast')

结果为

(1,2,3) {}
(1,2,3,4,5,6) {}
(1,2,3) {'a':'python', 'b':'cpp'}
() {'a':'3', 'b':'linux'}
(1,2) {'a':'3', 'b':'linux'}
() {'a':'python', 'b':'itcast'}

wraps函数
使用装饰器时,有一些细节需要被注意。例如:被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生变化)。
添加后由于函数名和函数的doc发生了变化,对测试结果有一些影响,例如:

def note(func):
    "note function"  # 说明文档
    def wrapper():
        " wrapper function"
        print('note someting')
        return func()
    return wrapper

@note
def test():
    "test function"
    print('I am test')

test()
print(help(test))

结果为

note somethong
I am test
wrapper function

所有,python的functools包中提供了一个wraps的装饰器来消除这样的副作用

import functools
def note(func):
    "note function"  # 说明文档
    @functools.wraps(func)
    def wrapper():
        " wrapper function"
        print('note someting')
        return func()
    return wrapper

@note
def test():
    "test function"
    print('I am test')

test()
print(help(test))

结果为:

note somethong
I am test
test function

python的标准模块

标准库说明
builtins内建函数默认加载
os操作系统接口
syspython自身的运行环境
functools常用的工具
json编码和解码JSON对象
logging记录日志,调试
multiprocessing多进程
threading多线程
copy拷贝
time时间
datetime日期时间
calendar日历
hashlib加密算法
random生成随机数
re字符串正则匹配
socket标准的BSD Socket API
shutil文件和目录管理
glob基于文件通配符搜索

hashlib
用于注册,登录

import hashlib
m = hashlib.md5() # 创建hash对象
print(m)
m.update(b'itcast') # 更新哈希对象以字符串参数
print(m.hexdigest) # 返回十六进制数字字符串
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值