python 国内镜像源 2020最新
http://pypi.douban.com/simple/ 豆瓣
http://mirrors.aliyun.com/pypi/simple/ 阿里
http://pypi.hustunique.com/simple/ 华中理工大学
http://pypi.sdutlinux.org/simple/ 山东理工大学
http://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学
https://pypi.tuna.tsinghua.edu.cn/simple 清华
我觉得对于像我这样的初学者用户,python官方的IDLE就是一个挺不错的选择。
当然,IDLE其实也需要适应。
其实我挺早之前就安装过官方自带的,后来每次打开都是打开到shell,觉得这样学编程简直是太折磨了,就放弃;后来觉得还是要学习python,就又下载下来,这次倒是找到了IDLE,然后觉得这个IDE也太简陋了吧,写了几句,运行出了些错误,就觉得不想学了。
直到第三次,才找到了IDLE的感觉,知道怎么通过运行后的shell中的提示去修改编辑器中的代码,也知道怎么打开debuger模式,这个时候才觉得python自带的IDLE很适合自己。
另外,觉得IDLE的有一套主题,叫IDLE Dark,很好看,配上fixedsys字体,是我现在最棒的感觉。这部分没有什么代码可以贴,不过希望我的这些感受和经历能够让更多人喜欢python和python自带的IDLE
map、filter 和 reduce
这三个函数号称是函数式编程的代表。在 Python3.x 和 Python2.x 中也有了很大的差异。
首先我们先简单的在 Python2.x 的交互下输入 map 和 filter,看到它们两者的类型是 built-in function(内置函数):
>>> map <built-in function map> >>> filter <built-in function filter> >>>
它们输出的结果类型都是列表:
>>> map(lambda x:x *2, [1,2,3]) [2, 4, 6] >>> filter(lambda x:x %2 ==0,range(10)) [0, 2, 4, 6, 8] >>>
但是在Python 3.x中它们却不是这个样子了:
>>> map <class 'map'> >>> map(print,[1,2,3]) <map object at 0x10d8bd400> >>> filter <class 'filter'> >>> filter(lambda x:x % 2 == 0, range(10)) <filter object at 0x10d8bd3c8> >>>
首先它们从函数变成了类,其次,它们的返回结果也从当初的列表成了一个可迭代的对象, 我们尝试用 next 函数来进行手工迭代:
>>> f =filter(lambda x:x %2 ==0, range(10)) >>> next(f) 0 >>> next(f) 2 >>> next(f) 4 >>> next(f) 6 >>>
对于比较高端的 reduce 函数,它在 Python 3.x 中已经不属于 built-in 了,被挪到 functools 模块当中。
打开文件
原:
file( ..... ) 或 open(.....)
改为只能用
open(.....)
从键盘录入一个字符串
原:
raw_input( "提示信息" )
改为:
input( "提示信息" )
在python2.x中raw_input()和input( ),两个函数都存在,其中区别为:
在python3.x中raw_input()和input( )进行了整合,去除了raw_input(),仅保留了input()函数,其接收任意任性输入,将所有输入默认为字符串处理,并返回字符串类型。
以下代码可以直观展示加锁和不加锁时,对数据修改情况。
加锁时
# -*-* encoding:UTF-8 -*- # author : shoushixiong # date : 2018/11/22 import threading import time list = [0,0,0,0,0,0,0,0,0,0,0,0] class myThread(threading.Thread): def __init__(self,threadId,name,counter): threading.Thread.__init__(self) self.threadId = threadId self.name = name self.counter = counter def run(self): print "开始线程:",self.name # 获得锁,成功获得锁定后返回 True # 可选的timeout参数不填时将一直阻塞直到获得锁定 # 否则超时后将返回 False threadLock.acquire() print_time(self.name,self.counter,list.__len__()) # 释放锁 threadLock.release() def __del__(self): print self.name,"线程结束!" def print_time(threadName,delay,counter): while counter: time.sleep(delay) list[counter-1] += 1 print "[%s] %s 修改第 %d 个值,修改后值为:%d" % (time.ctime(time.time()),threadName,counter,list[counter-1]) counter -= 1 threadLock = threading.Lock() threads = [] # 创建新线程 thread1 = myThread(1,"Thread-1",1) thread2 = myThread(2,"Thread-2",2) # 开启新线程 thread1.start() thread2.start() # 添加线程到线程列表 threads.append(thread1) threads.append(thread2) # 等待所有线程完成 for t in threads: t.join() print "主进程结束!"
输出结果为:
开始线程: Thread-1 开始线程: Thread-2 [Thu Nov 22 16:04:13 2018] Thread-1 修改第 12 个值,修改后值为:1 [Thu Nov 22 16:04:14 2018] Thread-1 修改第 11 个值,修改后值为:1 [Thu Nov 22 16:04:15 2018] Thread-1 修改第 10 个值,修改后值为:1 [Thu Nov 22 16:04:16 2018] Thread-1 修改第 9 个值,修改后值为:1 [Thu Nov 22 16:04:17 2018] Thread-1 修改第 8 个值,修改后值为:1 [Thu Nov 22 16:04:18 2018] Thread-1 修改第 7 个值,修改后值为:1 [Thu Nov 22 16:04:19 2018] Thread-1 修改第 6 个值,修改后值为:1 [Thu Nov 22 16:04:20 2018] Thread-1 修改第 5 个值,修改后值为:1 [Thu Nov 22 16:04:21 2018] Thread-1 修改第 4 个值,修改后值为:1 [Thu Nov 22 16:04:22 2018] Thread-1 修改第 3 个值,修改后值为:1 [Thu Nov 22 16:04:23 2018] Thread-1 修改第 2 个值,修改后值为:1 [Thu Nov 22 16:04:24 2018] Thread-1 修改第 1 个值,修改后值为:1 [Thu Nov 22 16:04:26 2018] Thread-2 修改第 12 个值,修改后值为:2 [Thu Nov 22 16:04:28 2018] Thread-2 修改第 11 个值,修改后值为:2 [Thu Nov 22 16:04:30 2018] Thread-2 修改第 10 个值,修改后值为:2 [Thu Nov 22 16:04:32 2018] Thread-2 修改第 9 个值,修改后值为:2 [Thu Nov 22 16:04:34 2018] Thread-2 修改第 8 个值,修改后值为:2 [Thu Nov 22 16:04:36 2018] Thread-2 修改第 7 个值,修改后值为:2 [Thu Nov 22 16:04:38 2018] Thread-2 修改第 6 个值,修改后值为:2 [Thu Nov 22 16:04:40 2018] Thread-2 修改第 5 个值,修改后值为:2 [Thu Nov 22 16:04:42 2018] Thread-2 修改第 4 个值,修改后值为:2 [Thu Nov 22 16:04:44 2018] Thread-2 修改第 3 个值,修改后值为:2 [Thu Nov 22 16:04:46 2018] Thread-2 修改第 2 个值,修改后值为:2 [Thu Nov 22 16:04:48 2018] Thread-2 修改第 1 个值,修改后值为:2 主进程结束! Thread-1 线程结束! Thread-2 线程结束!
不加锁时
threadLock.acquire() threadLock.release()
开始线程: Thread-1 开始线程: Thread-2 [Thu Nov 22 16:09:20 2018] Thread-1 修改第 12 个值,修改后值为:1 [Thu Nov 22 16:09:21 2018] Thread-2 修改第 12 个值,修改后值为:2 [Thu Nov 22 16:09:21 2018] Thread-1 修改第 11 个值,修改后值为:1 [Thu Nov 22 16:09:22 2018] Thread-1 修改第 10 个值,修改后值为:1 [Thu Nov 22 16:09:23 2018] Thread-1 修改第 9 个值,修改后值为:1 [Thu Nov 22 16:09:23 2018] Thread-2 修改第 11 个值,修改后值为:2 [Thu Nov 22 16:09:24 2018] Thread-1 修改第 8 个值,修改后值为:1 [Thu Nov 22 16:09:25 2018] Thread-2 修改第 10 个值,修改后值为:2 [Thu Nov 22 16:09:25 2018] Thread-1 修改第 7 个值,修改后值为:1 [Thu Nov 22 16:09:26 2018] Thread-1 修改第 6 个值,修改后值为:1 [Thu Nov 22 16:09:27 2018] Thread-2 修改第 9 个值,修改后值为:2 [Thu Nov 22 16:09:27 2018] Thread-1 修改第 5 个值,修改后值为:1 [Thu Nov 22 16:09:28 2018] Thread-1 修改第 4 个值,修改后值为:1 [Thu Nov 22 16:09:29 2018] Thread-2 修改第 8 个值,修改后值为:2 [Thu Nov 22 16:09:29 2018] Thread-1 修改第 3 个值,修改后值为:1 [Thu Nov 22 16:09:30 2018] Thread-1 修改第 2 个值,修改后值为:1 [Thu Nov 22 16:09:31 2018] Thread-2 修改第 7 个值,修改后值为:2 [Thu Nov 22 16:09:31 2018] Thread-1 修改第 1 个值,修改后值为:1 [Thu Nov 22 16:09:33 2018] Thread-2 修改第 6 个值,修改后值为:2 [Thu Nov 22 16:09:35 2018] Thread-2 修改第 5 个值,修改后值为:2 [Thu Nov 22 16:09:37 2018] Thread-2 修改第 4 个值,修改后值为:2 [Thu Nov 22 16:09:39 2018] Thread-2 修改第 3 个值,修改后值为:2 [Thu Nov 22 16:09:41 2018] Thread-2 修改第 2 个值,修改后值为:2 [Thu Nov 22 16:09:43 2018] Thread-2 修改第 1 个值,修改后值为:2 主进程结束! Thread-1 线程结束! Thread-2 线程结束!
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
2756python 国内镜像源
python 国内镜像源 2020最新
http://pypi.douban.com/simple/ 豆瓣
http://mirrors.aliyun.com/pypi/simple/ 阿里
http://pypi.hustunique.com/simple/ 华中理工大学
http://pypi.sdutlinux.org/simple/ 山东理工大学
http://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学
https://pypi.tuna.tsinghua.edu.cn/simple 清华
1001Python IDE
我觉得对于像我这样的初学者用户,python官方的IDLE就是一个挺不错的选择。
当然,IDLE其实也需要适应。
其实我挺早之前就安装过官方自带的,后来每次打开都是打开到shell,觉得这样学编程简直是太折磨了,就放弃;后来觉得还是要学习python,就又下载下来,这次倒是找到了IDLE,然后觉得这个IDE也太简陋了吧,写了几句,运行出了些错误,就觉得不想学了。
直到第三次,才找到了IDLE的感觉,知道怎么通过运行后的shell中的提示去修改编辑器中的代码,也知道怎么打开debuger模式,这个时候才觉得python自带的IDLE很适合自己。
另外,觉得IDLE的有一套主题,叫IDLE Dark,很好看,配上fixedsys字体,是我现在最棒的感觉。这部分没有什么代码可以贴,不过希望我的这些感受和经历能够让更多人喜欢python和python自带的IDLE
1000Python2.x与3.x版本区别
map、filter 和 reduce
这三个函数号称是函数式编程的代表。在 Python3.x 和 Python2.x 中也有了很大的差异。
首先我们先简单的在 Python2.x 的交互下输入 map 和 filter,看到它们两者的类型是 built-in function(内置函数):
它们输出的结果类型都是列表:
但是在Python 3.x中它们却不是这个样子了:
首先它们从函数变成了类,其次,它们的返回结果也从当初的列表成了一个可迭代的对象, 我们尝试用 next 函数来进行手工迭代:
对于比较高端的 reduce 函数,它在 Python 3.x 中已经不属于 built-in 了,被挪到 functools 模块当中。
999Python2.x与3.x版本区别
打开文件
原:
改为只能用
从键盘录入一个字符串
原:
改为:
在python2.x中raw_input()和input( ),两个函数都存在,其中区别为:
在python3.x中raw_input()和input( )进行了整合,去除了raw_input(),仅保留了input()函数,其接收任意任性输入,将所有输入默认为字符串处理,并返回字符串类型。
998Python 多线程
Python 线程同步
以下代码可以直观展示加锁和不加锁时,对数据修改情况。
加锁时
输出结果为:
不加锁时
同样是上面实例的代码,注释以下两行代码:输出结果为: