今天和PM谈了半个小时,他是我很尊敬的人,因为我觉得他很真实也很务实,是个实事求是的人,和他的一番对话,让我更加看清了些现在这个工作的情况。他说,以他理解,在我们公司销售不像销售,fae更像一个销售……中间提到销售弄不清自己的产品有什么优势和客户那边项目情况框图等很大程度依赖fae。重点是,他和原厂fae谈过一番话:一个fae的职责应该专注于一个方向,一个产品线,而不是一手抓,这是培养fae在这个方向的专业深度,另外更多应该侧重在帮客户分析和解决问题和现场应用上而非跑在销售后面跟项目进度跟进产品推荐。这样只能导致销售只负责开开单,fae也没有更好的锻炼。他这一番话充分揭开了我内心的纠结。本以为在mcu这个东西上深入专研,也不负自己大学的努力,但是事与愿违,客观上DFAE是不可能跟着单一产品线的,基本都只能一手抓,原厂也不会招没有经验的fae,这就造成一个死循环,技术不够深度如何变得“有经验”?这也是我几乎一年时间觉得用力全不能用在一个点上的无力感和空虚感。只能用“不专业”形容。试问这种不专业能在职业道路走多远?原厂是这么的稀缺,即使我能力够也被以“经验不足,生不逢时”来回应(原话:只招一个有多年经验的人,培养型去年已经招了一个,很可惜了)而即使是深圳,打开招聘软件又有多少原厂?寥寥无几,而且这行针对性强,我真怕慢慢下去会被这个社会和行业淘汰。万不得已才选择转行,不过也算是个契机,审视自己,更喜欢埋头写代码胜于调试硬件,更喜欢专注自己胜于当一个“懂技术的销售”。最近一直忐忑在想我是否太意气用事太草率,听完他的话我理解了自己这一年倒退了,没能更进一步。经过推荐也有另一家想挖我过去,可是这条路并不是我还想继续走下去的,我不想变成一个懂点技术皮毛的销售。与其这样,我愿意放弃得到的这些,找喜欢的事,做自己喜欢的事,不管这件事最后能不能是当程序员。

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

今天的内容:模块之含义、使用技巧、包 

#######################################################################################

模块:

        1)在你所编写的别的程序重用一些函数时,模块就能用上。最简单的一种方法是创建一个包含函数与变量,以 .py 为后缀的文件

   另一种方法是使用撰写 Python 解释器本身的本地语言来编写模块。举例来说,你可以使用 C语言来撰写 Python 模块,并且在编译后,你可以通过标准 Python 解释器在你的 Python 代码中使用它们。

 

        python的标准库功能跟模块一样使用。先了解标准库模块使用:

我的python学习--Day6 随笔 第1张

         这里看见问题我去找python错误定义,它说我用了非ascii的语句,这时我还没仔细想,查答案有一个解决办法就是在前两行加上:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

本来以为问题解决了,结果还弹出Error:  SyntaxError: invalid syntax,意思是关键符号没有加上,这时我恍然大悟,原来是我的冒号用了中文输入法的,才造成这个错误,小插曲用了我大半个小时。。。下面贴正确代码:

我的python学习--Day6 随笔 第2张

       解释一下这个模块怎么用:通过 import 语句导入 sys 模块。sys 模块包含了与 Python 解释器及其环境相关的功能,也就是所谓的系统功能(system)。

      sys.argv 变量是一系列字符串的列表(List)(列表将在后面的章节予以详细解释)。具体而言, sys.argv 包含了命令行参数(Command Line Arguments)这一列表,也就是使用命令行传递给你的程序的参数。提到命令行也就是说这个程序要在terminal中运行才有效。

      sys.argv[]说白了就是一个从程序外部获取参数的桥梁,从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一个列表,所以才能用[]提取其中的元素。其第一个元素是程序本身,随后才依次是外部给予的参数。

      因此,在这一例子中我们将会有如下对应关系: 'module_using_sys.py' 对应 sys.argv[0](这时固定的) , 'we' 对应sys.argv[1] , 'are' 对应 sys.argv[2] , 'human' 对应 sys.argv[3]

  通过运行 import os; print(os.getcwd()) 来查看你的程序目前所处在的目录。

 

       2)按字节码编译(Byte-Compiled)的 .pcy 文件:

   将python转换成中间形式的文件。这一 .pyc 文件在你下一次从其它不同的程序导入模块时非常有用——它将更加

快速,因为导入模块时所需要的一部分处理工作已经完成了。同时,这些按字节码编译的文件是独立于运行平台的。注意:这些 .pyc 文件通常会创建在与对应的 .py 文件所处的目录中。如果 Python 没有相应的权限对这一目录进行写入文件的操作,那么 .pyc 文件将不会被创建。

 

      from...import : 如from sys import argv ,以后用argv都不用带sys. 但不建议使用,避免名字冲突和程序阅读困难。

 

   __name__ (我从哪里被执行):当模块第一次被导入时,它所包含的代码将被执行。我们可以通过这一特性来使模块以不同的方式运行,这取决于它是为自己所用还是从其它从的模块中导入而来。这可以通过使用模块的__name__ 属性来实现。

 我的python学习--Day6 随笔 第3张

   这里还展示了模块是如何被调用的。

 

   如何编写自己的模块:每个 .py程序都可以用作一个模块。但是不能在编译器中展示,只能在命令行中展示

我的python学习--Day6 随笔 第4张

         自己写的模块用from...import...就很好用,省去重复的前缀。

 

        dir()函数: 

  返回由(任何)对象定义的名称列表。如果对象是模块,该列表会包括函数内所定义的函数、类与变量。如果没有提供参数,函数将返回当前模块的名称列表,如果参数是模块名称,将返回指定模块的名称列表。

  通过 del 语句移除了一个变量或是属性,如:del a  #删除掉a这个变量。它将如同从未存在过一般。

        比vars() 强大,首选dir()

    

        包(package):包是一种能够方便地分层组织模块的方式

  开始要求层次结构了:变量通常位于函数内部,函数与全局变量通常位于模块内部。如果你希望组织起这些模块的话,应该怎么办?这便是包(Packages)应当登场的时刻。

  包是指一个包含模块与一个特殊的 __init__.py 文件的文件夹,后者向 Python 表明这一文件夹是特别的,因为其包含了 Python 模块。

       你想创建一个名为“world”的包,其中还包含着 “asia”、“africa”等其它子包,同时这些子包都包含了诸如“india”、 “madagascar”等模块。那么:

  我的python学习--Day6 随笔 第5张

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄