python 自主学习笔记

文章目录

前言

最近在学halcon,机器视觉,越学越发现,python是无法避免的语言。因为python用途实在是太广了。python在计算机的地位和英语在世界语言的地位一样,是独一档的。无论是什么程序员,还是其它职业的工作人员,都可以去学一下Python。

相关教程

Python 3 教程|菜鸟教程

模板字符串

Python和C#,JavaScirpt,都推出了各自的模板字符串。这里要点名一下Java,Java的模板字符串出现的太晚了。Java 21才推出。其实好的设计语言都是互通的。

JavaScript

javascript 复制代码
var name = '小王'
var age = 16
var str = `我是${小王},今年${age}岁`

C#

csharp 复制代码
string name = "小王";
int age = 16;
string str = $"我是{小王},今年{age}岁"

Python

python 中的 f 字符串及其常见用法

python 复制代码
name = '小王'
age = 16
print(f'我叫{name},age={16}')

临时变量

说到临时变量,C#有匿名对象和元组,元组是最佳的临时变量。C#也有两种元组,Tuple和ValueTuple。元组在我的这里的评价的是临时变量。Python具有不可变性的常量。但是我觉得不可变性的用处不大。

C#的ValueTuple

C#就不展开说明了,之前做过了

C# 元祖,最佳的临时变量

Python

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(".../")就是在挖坑

在下面的评论区里面找到了答案

解决方案

比如我的文件路径结构

跨文件的调用是非常麻烦的,但是我们可以重定向到文件根路径

test2.py调用test1.py

python 复制代码
import sys,os
# 选择当前文件路径
os.chdir(os.path.dirname(__file__))
# 当前文件路径的上一层路径
sys.path.append("../")

from folder1 import test1

如果是test4.py,两层文件路径,则需要再往上一层

test4.py 调用test1.py

python 复制代码
import sys,os
# 选择当前文件路径
os.chdir(os.path.dirname(__file__))
# 当前文件路径的上两层路径
sys.path.append("../../")

from folder1 import test1

虽然一般没有两层文件夹,但是我得有解决的方案

我测试过,跟文件调用也没有任何问题

python 复制代码
# 完全没有任何问题
from folder3.folder4 import test4

暂时结束

我后面再研究一下Python的面向对象,我就可以彻底用python写复杂项目了。后面就是常用工具类的使用了,比如json,log,网络通讯等功能。

相关推荐
胖哥真不错23 分钟前
Python实现NOA星雀优化算法优化随机森林回归模型项目实战
python·机器学习·项目实战·随机森林回归模型·noa星雀优化算法
编程咕咕gu-24 分钟前
从零开始玩python--python版植物大战僵尸来袭
开发语言·python·python基础·pygame·python教程
代码的乐趣1 小时前
支持selenium的chrome driver更新到135.0.7049.42
chrome·python·selenium
SsummerC4 小时前
【leetcode100】数组中的第K个最大元素
python·算法·leetcode
伊玛目的门徒4 小时前
解决backtrader框架下日志ValueError: I/O operation on closed file.报错(jupyternotebook)
python·backtrader·量化·日志管理·回测
java1234_小锋5 小时前
一周学会Pandas2 Python数据处理与分析-编写Pandas2 HelloWord项目
python·pandas·python数据分析·pandas2
郭涤生5 小时前
Chapter 11: Stream Processing_《Designing Data-Intensive Application》
笔记·分布式
凯强同学6 小时前
第十四届蓝桥杯大赛软件赛省赛Python 大学 C 组:7.翻转
python·算法·蓝桥杯
一个真正のman.6 小时前
c加加学习之day01
学习
蔗理苦6 小时前
2025-04-03 Latex学习1——本地配置Latex + VScode环境
ide·vscode·学习·latex