首页 文章 精选 留言 我的

精选列表

搜索[python],共10000篇文章
优秀的个人博客,低调大师

Python进阶-算法-选择排序

版权声明:如需转载,请注明转载地址。 https://blog.csdn.net/oJohnny123/article/details/82085604 # 选择排序 data_set = [9, 1, 22, 31, 45, 3, 6, 2, 11] smallest = 0 # 初始列表最小值,默认为第一个 loop_count = 0 for j in range(len(data_set)): #按列表下标从0位数开始处理 for i in range(j, len(data_set)): # if data_set[i] < data_set[smallest]: # 当前值 比之前选出来的最小值 还要小,那就把它换成最小值 smallest = i print(smallest) loop_count += 1 else: print("smallest num is ", data_set[smallest]) tmp = data_set[smallest] data_set[smallest] = data_set[j] data_set[j] = tmp print(data_set) print("loop times", loop_count)

优秀的个人博客,低调大师

Python基础系列-异步IO

版权声明:如需转载,请注明转载地址。 https://blog.csdn.net/oJohnny123/article/details/81980259 涉及到几个概念: 1、协程是为了解决高并发用的东西。 2、协程的优点:无需线程上下文切换的开销,由此可以提高性能。无需原子操作锁定及同步的开销。也就是说,开销小。 asyncio就是一种异步IO 协程 import threading import asyncio import requests # 把 generator 标记为 coroutine 类型,便于执行 EventLoop @asyncio.coroutine def func(port): result = requests.get('http://10.0.53.129:{0}'.format(port)) print('Start %s! code: %s (%s)' % (port,result.status_code, threading.currentThread())) # 获取 EventLoop loop = asyncio.get_event_loop() tasks = [] for i in range(8000,9000): tasks.append(func(i)) # 执行 coroutine loop.run_until_complete(asyncio.wait(tasks)) loop.close()

优秀的个人博客,低调大师

python - http请求带Authorization

# 背景 接入公司的一个数据统计平台,该平台的接口是带上了Authorization验证方式来保证验签计算安全 # 方法 其实很简单,就是在header中加入key=Authorization,value是协商好的协议即可; 如,我们这边是base64.b64encode(uae_name + ":" + uae_passwd); 因此计算就是: # 计算uae的authorizationdef get_authorization(): return base64.b64encode(uae_name + ":" + uae_passwd); headers = { 'Authorization': 'Basic {}'.format(get_authorization()), 'ua': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36' } resp = requests.get(url, headers=headers) get_result(json.loads(resp.content)) print "" 虽千万人,吾往矣!

优秀的个人博客,低调大师

Python数组中求和问题

本专题主要介绍哈希表和指针两种方法来解决该类问题,从两个数之和引申到三个数之和,再从四个数之和的问题上思考如何构建出一种通用的代码(可以解决N个数之和)。本文主要内容是通过001问题来初步了解数组求和的两种常用方法。 001-Two Sum 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例 : 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 暴力循环 O(n^2) 唯一需要注意的是同一个元素不能复用 nums_len = len(nums) for i in range( 0 , nums_len): for j in range(

优秀的个人博客,低调大师

Python中*和**的使用

在为函数传递参数和函数定义时使用参数的时候,时常会看到有和*和**,下面分别讲解其作用。 调用函数时使用*和 ** 假设有函数 def test(a, b, c) test(*args):* 的作用其实就是把序列 args 中的每个元素,当作位置参数传进去。比如上面这个代码,如果 args 等于 (1,2,3) ,那么这个代码就等价于 test(1, 2, 3) 。 test(**kwargs):** 的作用则是把字典 kwargs 变成关键字参数传递。比如上面这个代码,如果 kwargs 等于 {‘a’:1,’b’:2,’c’:3} ,那这个代码就等价于 test(a=1,b=2,c=3) 。 定义函数参数时使用*和** def test(*args): 定义函数参数时* 的含义又要有所不同,在这里 *args 表示把传进来的位置参数都装在元组 args 里面。比如说上面这个函数,调用 test(1, 2, 3) 的话, args 的值就是 (1, 2, 3) 。: def test(**kwargs): 类似的, ** 就是针对关键字参数和字典的了。 调用 test(a=1,b=2,c=3) 的话, kwargs 的值就是 {‘a’:1,’b’:2,’c’:3} 了。

优秀的个人博客,低调大师

python-函数入门(一)

1.什么是函数: 可重复使用的,用来实现单一,或相关联功能的代码段。 函数分为内置函数和自定义函数,这里先讲自定义函数 2.如何定义函数: #语法 def 函数名(参数1,参数2,参数3,...): '''注释''' 函数体 return 返回的值 注:函数必须先定义才能使用,定义阶段不执行代码只检测语法.意思就是语法错误在定义阶段就会检测出来,代码的逻辑错误只有在执行时才会提示. 3.定义函数的三种形式 无参:用于执行一些打印等操作,不需要参数传进去 有参:需要根据传进去的参数进行运算 空函数:用于设计代码结构 # 1.无参函数 # def foo(): # print('from foo') # foo() # # 2.有参函数 # def bar(): # print(x,y) # bar(1,2) # # 3,空函数 # def func(): # pass 4.函数调用 函数调用就是函数名加个()即可 4.1调用函数的三种形式: # 1.语句形式 # def foo(): # print('from foo') # foo() # # 2.表达式形式 # def foo(x,y): # res = x+y # return res # res = foo(1,2) # 3.可以当做参数传给另外一个函数 # def max2(x,y): # if x>y: # return x # else: # return y # res = max2(max2(1,2),3) # print(res) 4.2函数的返回值 1.返回值没有类型限制 2.返回值没有个数限制 注:返回多个值的结果就是返回一个元组,0个值返回为None return是函数结束的标准,可以有多个return但只执行一次 # def f1(): # print('111') # return 1 # print('222') # return 2 # print('333') # return 3 #def f1() #只执行 print('111') 4.3函数的参数 函数的参数分为形参和实参.形参即为变量名,实参为变量值,在函数调用时,把值绑定到变量名上,在函数调用结束后,解除绑定 形参与实参的具体分类(重点) 1.位置参数 1.1位置形参 在定义函数阶段按照从左到右的顺序定义的形参. 注:按位置定义的形参必须被传值,多一个不行,少一个也不行 # def foo(x,y) # print(x,y) # # foo(1,2) #正确 # foo(1,2,3) #错误 1.2位置实参 在调用函数阶段按照从左到右的顺序依次传入的值. 2.关键字参数 关键字实参:在调用函数阶段,按照key=value的形式指名道姓的为指定值传值 注:可以完全打乱顺序,仍可以为指定的形参传值 可以混合使用位置实参和关键字实参,但必须注意(1)位置实参必须放在关键字实参前面(2)不能对一个形参重复赋值 def foo(name,age): print(name,age) foo('zfj',18) foo(age=18,name='egon') # foo(name='zfj',18)#报错 # foo('zfj', age=18) 3.默认参数 指的是在定义阶段就已经为某个形参赋值了,该形参称之为有默认值的形参 注意:1.在定义阶段就已经被赋值,意味着在调用阶段就可以直接使用,默认参数 2.位置形参应该放到默认形参前面 3.默认参数的值,通常应该为不可变类型 def foo(x,y=2): print(x,y) foo(1)#1,2 foo(1,3)#1,3 4.可变长度参数 站在实参的角度,参数长度可变指的是在调用函数时,传入的实参的值个数不固定 4.1在形参中带“*”:会将调用函数时溢出的位置实参保存为元组的形式,然后赋值给*后的变量 def foo(x,y,*z): print(x,y,z) foo(1,2,3,4,5)#1 2 (3, 4, 5) 4.2在形参中带“**”:会将调用函数时溢出的关键字实参保存成字典的形式,然后赋值给**后的变量名 def foo(x,y,**z): print(x,y,z) foo(1,2,a=1,b=2)#1 2 {'a': 1, 'b': 2} 4.3在实参中带“*”:在传值前先被打散成位置实参,然后再进行赋值 def foo(x,y,*z): print(x,y,z) foo(1,*[2,3,4,5,6])#1 2 (3, 4, 5, 6) 4.4在实参中带“**”:在传值前先被打散成关键字实参,然后再进行赋值 def foo(x,y,z): print(x,y,z) foo(1,**{'y':2,'z':1})#1 2 1 5.命名关键字参数 放到*与**之间的参数称为命名关键字参数。函数的调用者可以传入任意不受限制的关键字参数 注意:命名关键字参数必须按照key = value的形式传值 补充: 在形参中带*与**的,*后的变量名应该为args,**后应该是kwargs # 当我们想要将传给一个函数的参数格式原封不动地转嫁给其内部的一个函数,应该使用下面这种格式 def bar(x,y,z): print(x,y,z) def wrapper(*args,**kwargs): bar(*args,**kwargs) wrapper(1,2,z=3) #虽然调用的是wrapper,但是要遵循的却是bar的参数标准 焚膏油以继晷,恒兀兀以穷年。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册