欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

python

马哥 今日小技巧 itertools生成排列 有大用



# itertools生成排列


# itertools.permutations() generates permutations 


# for an iterable. Time to brute-force those passwords ;-)


>>> import itertools


>>> for p in itertools.permutations('ABCD'):


...     print(p)


('A', 'B', 'C', 'D')


('A', 'B', 'D', 'C')


('A', 'C', 'B', 'D')


('A', 'C', 'D', 'B')


('A', 'D', 'B', 'C')


('A', 'D', 'C', 'B')

普通分类: 

马哥 今日小技巧 使用dis查看python虚拟机中字节码 有大用

# You can use Python's built-in "dis"

# module to disassemble functions and

# inspect their CPython VM bytecode:


>>> def greet(name):

...     return 'Hello, ' + name + '!'


>>> greet('Dan')

'Hello, Dan!'


>>> import dis

>>> dis.dis(greet)

2   0 LOAD_CONST     1 ('Hello, ')

    2 LOAD_FAST      0 (name)

    4 BINARY_ADD

    6 LOAD_CONST     2 ('!')

    8 BINARY_ADD

   10 RETURN_VALUE


普通分类: 

马哥 今日小技巧 字典中get方法设置默认值 有大用

 字典中get方法设置默认值



# The get() method on dicts

# and its "default" argument


name_for_userid = {

    382: "Alice",

    590: "Bob",

    951: "Dilbert",

}


def greeting(userid):

    return "Hi %s!" % name_for_userid.get(userid, "there")


>>> greeting(382)

"Hi Alice!"


>>> greeting(333333)

"Hi there!"


普通分类: 

马哥 今日小技巧 类方法和静态方法 实例方法差异 有大用

# @classmethod vs @staticmethod vs "plain" methods

# What's the difference?


class MyClass:

    def method(self):

        """

        Instance methods need a class instance and

        can access the instance through `self`.

        """

        return 'instance method called', self


    @classmethod

    def classmethod(cls):

        """

        Class methods don't need a class instance.

        They can't access the instance (self) but

普通分类: 

马哥 今日小技巧 s = "ajldjlajfdljfddd",去重并从小到大排序输出"adfjl" 有大用

s = "ajldjlajfdljfddd",去重并从小到大排序输出"adfjl"

先使用set去重特性,然后排序,再通过join方法连接成字符串,代码如下


s = "ajldjlajfdljfddd"

s = set(s)

s = sorted(s)

print(‘’.join(s))



来自  http://ke.magedu.com/article/112

普通分类: 

马哥 今日小技巧 按键值升序排序 通过sorted结合key参数排序 有大用

dic={"name":"zs","age":18,"city":"深圳","tel":"1362626627"},按键值升序排序


通过sorted结合key参数排序,再重新组成字典


dic = {"name":"zs","age":18,"city":"深圳","tel":"1362626627"}


tmp = sorted(dic.items(), key=lambda x: x[0])


print(dict(tmp))


来自  http://ke.magedu.com/article/113

普通分类: 

马哥 今日小技巧 Python的try语句中except、else和finally的区别 有大用

except 为try语句块内发生异常时执行


else 为try语句块内未发生异常时执行


finally 不管是否有异常发生都会执行


来自  http://ke.magedu.com/article/115?tdsourcetag=s_pctim_aiomsg

普通分类: 

马哥 今日小技巧 运用python切片技巧 有大用

# You can clear all elements from a list:

>>> lst = [1, 2, 3, 4, 5]

>>> del lst[:]

>>> lst

[]


# You can replace all elements of a list

# without creating a new list object:

>>> a = lst

>>> lst[:] = [7, 8, 9]

>>> lst

[7, 8, 9]

>>> a

[7, 8, 9]

>>> a is lst

True


# You can also create a (shallow) copy of a list:

>>> b = lst[:]

>>> b

[7, 8, 9]

>>> b is lst

普通分类: 

马哥 今日小技巧 按value排序字典 有大用

按value排序字典

Python的内置字典数据类型是无序的,而key可以被用来获取对应的value。有时我们需要根据value对字典中的item进行排序输出。方法如下所示:


方法一:用sorted函数排序,其中key参数是lamda表达式。

a = {'a':100,'b':20, 'c':150, 'd':1}

print(sorted(a.items(), key=lambda x:x[1]))


方法二:用operator.itemgetter而不是lamda表达式进行排序。

from operator import itemgetter

print(sorted(a.items(), key=itemgetter[1]))


方法三:如果只需得到排序后的key,可用.get

print(sorted(a, key=a.get()))       

更多历史小技巧,技术交流,岗位内推访问【马哥社区 club.magedu.com】


普通分类: 

马哥 今日小技巧 Python3.8的functools中新增了叫cached_property的装饰器 有大用

Python3.8的functools中新增了叫cached_property的装饰器,看名字应该大概知道什么作用了,看以下例子:

from functors import cached_property

class A:

@cached_property

def say(self):

print(‘****’)

return ‘hello’


a = A()

a.say

以上例子只有第一次访问say属性时才会打印****


普通分类: 

马哥 今日小技巧 Python中的is和==的区别 有大用

Python中的is和==的区别,is时检查对象的标识符是否一致,也就是比较两个对象在内存中的地址是否一样,而==用来检查两个对象是否相等。例如在判断a is b时 相当于在判断id(a) == id(b),a == b 则是调用对象的__eq__方法,相当于a.__eq__(b)。

linux:

Nginx Method Limit

[xxx@xx conf]$ cat http_method_limit.conf

if ($request_method = PUT ) {

    return 403;

}


if ($request_method = TRACE ) {

    return 403;

}


if ($request_method = DELETE ) {

    return 403;

}


普通分类: 

马哥 今日小技巧 通过zip函数同时迭代多个序列,其可迭代次数取决于长度最小的序列。 有大用

通过zip函数同时迭代多个序列,其可迭代次数取决于长度最小的序列。

for a, b in zip(['a', 'b', 'c'], [1, 2, 3]):

    print(a, b)

    

输出结果:

a 1

b 2

c 3

linux:

Nginx Upload Deny

[xx@xxx conf]$ cat deny_uploads.conf

location /uploads/ {

    location ~ .*\.(php|php5)?$ {

        deny all;

    }

}


普通分类: 

马哥 今日小技巧 通过itertools.chain连续迭代多个序列,看以下例子 有大用

通过itertools.chain连续迭代多个序列,看以下例子:

from itertools import chain

a = ['a', 'b', 'c']

b = [1, 2, 3]


for x in chain(a, b):

    print(x)


输出结果:

a

b

c

1

2

3





普通分类: 

利用MD5对字符串和文件进行加密

普通分类: 

计算文件的md5值

利用Python计算文件MD5值(从前台上传一个文件,后台计算MD5值后,返给前端)

普通分类: 

python

image.png

普通分类: 

[Python]新手写爬虫全过程(已完成)

普通分类: 

python 网络爬虫入门(一)———第一个python爬虫实例 python网络爬虫入门(二)———模拟登陆知乎 python网络爬虫入门(三)———多线程

教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。Scratch,是抓取的意思,这个Python的爬虫框架叫Scrapy,大概也是这个意思吧,就叫它:小刮刮吧。Scrapy 使用了 Twisted异步网络库来处理网络通讯。整体架构大致如下

普通分类: 

一个Python小白5个小时爬虫经历

  最近业余在做一个基于.NET Core的搜索项目,奈何基层代码写好了,没有看起来很华丽的数据供测试。很巧的也是博客搜索,于是乎想到了博客园。C#也能做做页面数据抓取的,不过在博客园看到的大部分都是python实现,所以就临时想了一下看看python到底是什么东东,不看基础语法,不看语言功能,直接上代码,哪里不会搜哪里。代码完成总共用时大概4个小时,其中搭建环境加安装BeautifulSoup大概1个小时。解析HTML用时间最多了,边看demo边解析,大概2个小时,剩下的时间就是调试加保存数据了。

普通分类: 

python 多线程就这么简单 有大用 有大大用

普通分类: 

python的多线程到底有没有用?

在群里经常听到这样的争执,有人是虚心请教问题,有人就大放厥词因为这个说python辣鸡。而争论的核心无非就是,python的多线程在同一时刻只会有一条线程跑在CPU里面,其他线程都在睡觉。这是真的吗?

普通分类: 

Python的from import和import的区别?

我刚开始学习Python,对于import和from import我觉得应该是有区别的,但是在网上搜了一圈,还是没有解答我的疑惑。
普通分类: 

查看python已经安装的模块

由于正在学习,就不可避免的学到python中怎样安装模块,比如用easy_install安装就很方便,但是该命令只管安装和删除,却不管列出当前已经安装哪些模块,让用惯pkg_info 的我很不适宜。
普通分类: 

大家都用 Python 来做什么啊

普通分类: 

python strip()函数 介绍 python 移除首尾空格 文心一言 chatgpt 有大用 有大大用

普通分类: 

Event Loop

event loop 对象包含两个部分:event 和 loop。event 负责 I/O 事件通知而 loop 负责循环处理 I/O 通知并在就绪时调用回调。
普通分类: 

Python 标准库 18.5 - asyncio

Event Loop


普通分类: 

PYTHON ASYNCIO库的学习和使用

因为要找工作,把之前自己搞的爬虫整理一下,没有项目经验真蛋疼,只能做这种水的不行的东西。。。T  T,希望找工作能有好结果。

之前爬虫使用的是requests+多线程/多进程,后来随着前几天的深入了解,才发现,对于爬虫来说,真正的瓶颈并不是CPU的处理速度,而是对于网页抓取时候的往返时间,因为如果采用requests+多线程/多进程,他本身是阻塞式的编程,所以时间都花费在了等待网页结果的返回和对爬取到的数据的写入上面。而如果采用非阻塞编程,那么就没有这个困扰。这边首先要理解一下阻塞和非阻塞的区别

普通分类: 

Python rstrip()方法

描述

普通分类: 

页面

Subscribe to RSS - python