python 学习

import 与  from import 区别

import 模块       不会跳过私有属性

from 模块 import 函数

from 模块 import *     会跳过私有属性

 

学习一门语言不光光是学习语法,还要学习相关的项目管理,以及 相关库。以及一些开源项目。(2023.5.4)

 

from…import *语句与import区别在于:

import 导入模块,每次使用模块中的函数都要是定是哪个模块。

from…import * 导入模块,每次使用模块中的函数,直接使用函数就可以了;注因为已经知道该函数是那个模块中的了。

 

笔者建议:一般来说,推荐使用 import 语句,避免使用 from … import,因为这样可以使你的程序更加易读,也可以避免名称冲突

来源:https://www.runoob.com/note/26325

 

python2 与 python3 到底学哪个好。都要学。纠结浪费的时间,都已经学好了

 

 Python package对于Python package 文件夹而言,与Dictionary不同之处在于其会自动创建_ _ init__.py文件

 

 @符号 修饰符:

@符号用做函数的修饰符,可以在模块或者类的定义层内对函数进行修饰,出现在函数定义的前一行,不允许和函数定义在同一行。

  一个修饰符就是一个函数,它将被修饰的函数作为参数,并返回修饰后的同名函数或其他可调用的东西(如果返回不是一个可调用的对象那么会报错)。

例子1:

def wrap(f):
def decorator(*args, **kw):
print 'Call %s()' % f.__name__
return f(*args, **kw)
return decorator

@wrap
def func(a, b):
return a * 10 + b

if __name__ == '__main__':
print func(1, 2)

输出:

C:\Python27\python.exe E:/workspacePython/testProject/main.py
Call func()
12

Process finished with exit code 0

 

例子2:

def wrap1(f):
def decorator(*args, **kw):
print 'Call %s() in wrap1' % f.__name__
return f(*args, **kw)
return decorator


def wrap2(f):
def decorator(*args, **kw):
print 'Call %s() in wrap2' % f.__name__
return f(*args, **kw)
return decorator


@wrap2
@wrap1
def func(a, b):
return a * 10 + b


if __name__ == '__main__':
print func(5, 6)

输出:

C:\Python27\python.exe E:/workspacePython/testProject/main.py
Call decorator() in wrap2
Call func() in wrap1
56

Process finished with exit code 0

 

总结:

由上面的例子可以看出,@符号其实就是个包装器,第2个例子中的func(5,6)其实含义是:wrap2(wrap1(func(5,6)))

  每一层调用装饰都传递的是函数对象,每一层Wrap返回对象也是一个可调用的对象(如上例中的decorator)

来源:cnblogs.com/kuliuheng/p/10645243.html

 

 

 

python单引号和双引号的区别

简单来说,在Python中使用单引号或双引号是没有区别的,都可以用来表示一个字符串。但是这两种通用的表达方式,除了可以简化程序员的开发,避免出错之外,还有一种好处,就是可以减少转义字符的使用,使程序看起来更简洁,更清晰。

更多学习内容,请点击python学习网。

举个两个例子:

1、包含单引号的字符串

假如你想定义一个字符串my_str,其值为: I’m a student,则可以采用如下方式,通过转义字符 \ 进行定义

my_str='I\'mastudent'

也可以不使用转义字符,利用双引号直接进行定义

my_str="I'mastudent"

2、包含双引号的字符串

假如你想定义一个字符串my_str,其值为: Jason said “I like you” ,则可以采用如下方式,通过转义字符 \ 进行定义

my_str="Jasonsaid\"Ilikeyou\""

也可以不使用转义字符,利用单引号直接进行定义

my_str='Jasonsaid"Ilikeyou"'

通过这种方式,在合适的场景下采用单引号,或者双引号,是不是可以非常有效的避免转义字符的使用,并且可以使代码看起来更加的简洁清晰,易懂。

 

还有多行打印

知识点扩展:

1.表示注释

#Author:Archer Zon
#3个单引号表示注释多行
'''
gf_of_archerzon = "Wang"
print("archerzon的女盆友是",gf_of_archerzon)
print("archerzon的女盆友是%s"%gf_of_archerzon)
'''

2.表示多行打印

#Author:Archer Zon
msg='''
gf_of_archerzon = "Wang"
print("archerzon的女盆友是",gf_of_archerzon)
print("archerzon的女盆友是%s"%gf_of_archerzon)
'''

输出:

gf_of_archerzon = "Wang"
print("archerzon的女盆友是",gf_of_archerzon)
print("archerzon的女盆友是%s"%gf_of_archerzon)

到此这篇关于python里的单引号和双引号的有什么作用的文章就介绍到这了,更多相关python里的单引号和双引号的区别内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

来自:https://cloud.tencent.com/developer/article/1724569

 

 

python 注释: 单行 # 

多行

'''

注释

'''

"""

注释

"""

三对 单引号或者多引号

 

python2  与 python3 区别:

 

Python3和Python2在项目结构方面没有太大的区别,它们都使用相同的目录结构和文件命名约定。不过有一些细微的差别:

  1. print语句:Python2中的print语句不需要括号,而Python3中的print语句需要用括号。因此在Python3中,你需要将所有的print语句改为print()函数调用。

  2. 字符串编码:在Python2中,默认使用ASCII编码,而在Python3中默认使用Unicode编码。因此,在处理字符串时,需要考虑编码的问题。

  3. 继承object:在Python2中,如果定义一个类,不需要显式地继承object。而在Python3中,如果你想定义一个新式类,必须显式地继承object。

  4. 异常处理:在Python2中,可以使用逗号将多个异常类型放在一起处理,而在Python3中需要使用as关键字。例如,在Python2中可以这样写:except (ValueError, TypeError):,而在Python3中需要这样写:except (ValueError, TypeError) as e:。

  5. xrange函数:在Python2中,有一个名为xrange()的函数,它返回一个生成器,用于迭代一系列整数。而在Python3中,这个函数被废弃了,取而代之的是range()函数,它返回一个可迭代对象。如果需要一个生成器,可以使用Python3中的新函数range()来替代xrange()。

  6. Division操作:在Python2中,如果两个整数相除,结果会被向下取整,返回整数类型;而在Python3中,除法操作总是返回浮点数类型,即使两个操作数都是整数。如果要在Python3中进行整除操作,可以使用 // 运算符。

总之,虽然在项目结构上Python2和Python3相似,但是在语言特性上有很多不同,需要开发者在编写代码时注意这些细节。

 

在Python2中,如果你想要使用Python3中的某些特性,你可以导入__future__模块,以便在Python2中启用这些特性。在Python3中,__future__模块仍然存在,但它通常不需要被导入,因为Python3已经默认启用了这些特性。

虽然在Python2和Python3中都存在__future__模块,但它们支持的特性略有不同。在Python2中,__future__模块可以启用的特性包括:

  1. print_function:启用Python3中的print函数,使得print语句成为函数调用。

  2. division:启用Python3中的除法操作,即两个整数相除时返回浮点数类型。

  3. absolute_import:改变了模块导入的行为,使得只有绝对导入才会被执行,而相对导入则不会被执行。

  4. unicode_literals:将所有字符串视为Unicode字符串,而不是ASCII字符串。

  5. generators:优化生成器的行为,使得在Python2中使用生成器更加高效。

而在Python3中,__future__模块可以启用的特性包括:

  1. annotations:增强函数参数和返回值的注释功能。

  2. generator_stop:为生成器添加了close方法,使得可以更方便地关闭生成器。

  3. division:启用Python2中的整除操作,即两个整数相除时返回整数类型。

  4. print_function:在Python3中,这个特性默认已经启用,所以在Python3中通常不需要导入__future__模块来使用print函数。

总之,虽然Python2和Python3都支持__future__模块,但是它们支持的特性略有不同。在Python2中,__future__模块主要用于启用Python3中的特性,而在Python3中,__future__模块则更多地用于试验一些新特性。

 

模块路径查找:

搜索路径

当你导入一个模块,Python 解析器对模块位置的搜索顺序是:

  • 1、当前目录
  • 2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
  • 3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。

模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

 

以上 2023.2.21号记录

 

模块与包的区别

package 包含多个 module。

一个python一个模块

 

有以下几种导入方式:

import subpackage1.a # 将模块subpackage.a导入全局命名空间,例如访问a中属性时用subpackage1.a.attr
from subpackage1 import a # 将模块a导入全局命名空间,例如访问a中属性时用a.attr_a
from subpackage.a import attr_a # 将模块a的属性直接导入到命名空间中,例如访问a中属性时直接用attr_a

 

安装 flask pip2

解决

 

 

 一下来自https://www.wyr.me/post/678  安装正确的pip2 版本:

正确的安装姿势

sudo apt install wget python-is-python2 # 安装wget和python2
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py

image.png

复制下面的命令,可快速完成python2和python3以及对应pip的安装。

sudo apt install wget python python3 python3-pip python-ply python3-ply -y
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py

image.png

记得重启终端。

 

一键理解 flask:https://smartkeyerror.com/Flask-Web

 讲解python flask 非常好。

 

from flask import Flask

app = Flask(__name__)

@app.route("/api/hello")
def hello():
return "Hello World~"

if __name__ == "__main__":
app.run(host="0.0.0.0", port=8356, debug=True)

 

python 类型

元组:小括号,不能修改。

list 列表:中括号 [1,2,3,4,5]

set集合:大括号 ,不重复。{'a','b','c'} 。set(). 无序。

dirt 字典:大括号,有冒号。key一般不重复。重复,使用后面的,代替。

 

 2023.2.22 以上记录时间

 

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 线程创建和传参.py
@Time:2021/04/24 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
 
"""
 
 
# 导入线程threading模块
import threading
# 导入内置模块time
import time
 
def wash_clothes():
print("洗衣服开始...")
# sleep 5 秒,默认以秒为单位
time.sleep(5)
print("洗衣服完成...")
 
def clean_room():
print("打扫房间开始...")
# sleep 5 秒,默认以秒为单位
time.sleep(5)
print("打扫房间完成...")
 
if __name__ == "__main__":
 
# 创建线程并初始化 -- 该线程执行wash_clothes中的代码
t1 = threading.Thread(target=wash_clothes)
# 创建线程并初始化 -- 该线程执行clean_room中的代码
t2 = threading.Thread(target=clean_room)
 
t1.start()
t2.start()
 
 
'''
输出结果:
 
洗衣服开始...
打扫房间开始...
洗衣服完成...
打扫房间完成...
'''

https://www.codersrc.com/archives/6015.html

 

python2 需要安装 future

pip install future

python3 自带future库,无需要安装。

 

execute.submit()

execute.map(func,sec)   最好用 lamda p

 

 

 

 

三.Python 线程池 ThreadPoolExecutor 函数介绍

  •      1.ThreadPoolExecutor 构造实例的时候,传入 max_workers 参数来设置线程池中最多能同时运行的线程数目。
  •      2.使用 submit 函数来提交线程需要执行的任务(函数名和参数)到线程池中,并返回该任务的句柄(类似于文件、画图),注意 submit 不是阻塞的,而是立即返回。
  •      3.通过 submit 函数返回的任务句柄,能够使用 done 方法判断该任务是否结束。下面的例子可以看出,由于任务有 2s 的延时,在 task1 提交后立刻判断, task1 还未完成,而在延时 4s 之后判断,task1 就完成了。
  •      4.使用 cancel 方法可以取消提交的任务,如果任务已经在线程池中运行了,就取消不了。这个例子中,线程池的大小设置为 2 ,任务已经在运行了,所以取消失败。如果改变线程池的大小为 1 ,那么先提交的是 task1,task2 还在排队等候,这是时候就可以成功取消。
  •      5.使用 result 方法可以获取任务的返回值,注意:这个方法是阻塞的。

 

https://zhuanlan.zhihu.com/p/343232126

以上 2023.3.3

 

pip 版本太低。

 

 

安装高版本pip

https://blog.csdn.net/weixin_45036339/article/details/121355851

在线下载:

wget https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
tar -xvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
sudo python2 setup.py build
sudo python2 setup.py install

 

 

 

 

手动下载

随便找一个文件目录,安装setuptools包,

wget https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
tar -xvf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
sudo python2 setup.py build
sudo python2 setup.py install

 

离线下载 地址:https://pypi.org/project/pip/20.3.4/#files

tar -zxvf pip-20.3.4.tar.gz
cd pip-20.3.4/
sudo python2 setup.py install

 

以上2023.3.8

 

python2 与python3 区别:https://www.zhihu.com/question/19698598

print

unicode 与str, 变成str与 bytes 。

xrange 变成 range

 

基础语法:https://www.runoob.com/python3/python3-basic-syntax.html

没事看看 菜鸟教程:https://www.runoob.com/python3/python3-tutorial.html

标识符:第一个字符必须是字母表中字母或下划线 _;标识符的其他的部分由字母、数字和下划线组成。 标识符对大小写敏感;与go相同。

基础数据类型:不变:数字number,字符串string,tuple元组; 变的列表list,字典map,集合set。

 

python3 环境搭建:https://www.runoob.com/python3/python3-install.html 

 

以下为在 Unix & Linux 平台上安装 Python 的简单步骤:

  • 打开 WEB 浏览器访问 https://www.python.org/downloads/source/
  • 选择适用于 Unix/Linux 的源码压缩包。
  • 下载及解压压缩包 Python-3.x.x.tgz3.x.x 为你下载的对应版本号。
  • 如果你需要自定义一些选项修改 Modules/Setup

 Python3.6.1 版本为例:

# tar -zxvf Python-3.6.1.tgz
# cd Python-3.6.1
# ./configure
# make && make install

检查 Python3 是否正常可用:

# python3 -V
Python 3.6.1

 

 

 

以上 2024.5.9

 

 

参考:

 

posted @   redrobot  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
点击右上角即可分享
微信分享提示