文章目录
- 前言
- 相关教程
- 模板字符串
- JavaScript
- C#
- Python
- 临时变量
- C#的ValueTuple
- Python
- 字典
- 自定义模块化封装的文件路径问题
- 解决方案
- 暂时结束
前言
最近在学halcon,机器视觉,越学越发现,python是无法避免的语言。因为python用途实在是太广了。python在计算机的地位和英语在世界语言的地位一样,是独一档的。无论是什么程序员,还是其它职业的工作人员,都可以去学一下Python。
相关教程
Python 3 教程|菜鸟教程
模板字符串
Python和C#,JavaScirpt,都推出了各自的模板字符串。这里要点名一下Java,Java的模板字符串出现的太晚了。Java 21才推出。其实好的设计语言都是互通的。
JavaScript
var name = '小王'
var age = 16
var str = `我是${小王},今年${age}岁`
C#
string name = "小王";
int age = 16;
string str = $"我是{小王},今年{age}岁"
Python
python 中的 f 字符串及其常见用法
name = '小王'
age = 16
print(f'我叫{name},age={16}')
临时变量
说到临时变量,C#有匿名对象和元组,元组是最佳的临时变量。C#也有两种元组,Tuple和ValueTuple。元组在我的这里的评价的是临时变量。Python具有不可变性的常量。但是我觉得不可变性的用处不大。
C#的ValueTuple
C#就不展开说明了,之前做过了
C# 元祖,最佳的临时变量
Python
Python的元组需要引入命名空间,而且需要函数创建。这个就不够优雅了。
# 需要额外引入命名空间
from collections import namedtuple
# 需要保证Tuple命名和入参的名称一致
Mytuple = namedtuple("Mytuple",['x','y'])
p1 = Mytuple(x = 1,y =2)
print(p1.x,p1.y)
字典
感觉我的思路是错误的,Python里面的元组就是用来返回静态常量的,Python里面的字典倒是可以实现我想要的参数的功能
自定义模块化封装的文件路径问题
模块之间的互相引用是必须的,因为复杂的项目一定是封装成多个文件,这样才具有复用性,解耦性。
在其它语言中,我们都是先创建一个解决方案,由解决方案去管理整个文件路径,又有一个命名空间的概念,命名空间就是每个类的住址的唯一门牌号,这样才能保证我们的类的引用不会出错
【Python】Python 包 ② ( 自定义
Python 包
| 导入并调用自定义 Python 包 |__init__.py
定义__all__
变量 )
python的构建工具setup.py的方法使用示例
python 文件夹py文件相互引用
但是上面的方法都是有问题的
我找了半天,我终于了解决的方案。
python3:sys.path.append(“…/”)就是在挖坑
在下面的评论区里面找到了答案
解决方案
比如我的文件路径结构
- test.py
- folder1
- test1.py
- folder2
- test2.py
- folder3
- folder4
- test4.py
- folder4
跨文件的调用是非常麻烦的,但是我们可以重定向到文件根路径
test2.py调用test1.py
import sys,os
# 选择当前文件路径
os.chdir(os.path.dirname(__file__))
# 当前文件路径的上一层路径
sys.path.append("../")from folder1 import test1
如果是test4.py,两层文件路径,则需要再往上一层
test4.py 调用test1.py
import sys,os
# 选择当前文件路径
os.chdir(os.path.dirname(__file__))
# 当前文件路径的上两层路径
sys.path.append("../../")from folder1 import test1
虽然一般没有两层文件夹,但是我得有解决的方案
我测试过,跟文件调用也没有任何问题
# 完全没有任何问题
from folder3.folder4 import test4
暂时结束
我后面再研究一下Python的面向对象,我就可以彻底用python写复杂项目了。后面就是常用工具类的使用了,比如json,log,网络通讯等功能。