0 引言

之前用python跑过深度学习的代码,用过一段时间的jupiter和tensorflow;最近在Ubuntu下搭建起了VSCode + Anaconda的python开发环境,感觉很好用,尤其是用来做算法验证简直舒服得一匹。遂单独开一贴,记录一下python学习与使用中的一些好玩的点。

1 python中的函数参数

python是弱参数类型语言,这符合当前高级变成语言发展的趋势。我是从c++新标准中提倡使用的auto开始了解这一趋势的,后来在《面向对象编程》一课中,写jsp的时候,用到了var,也是根据初始化参数类型推测变量的类型。如今,python将这一趋势发扬光大,使得语言变得及其好用,简直舒服极了!!!

在python的函数定义中,延续了这一特点,使得其函数的定义方式天然就就具有重载性质,显示出了无与伦比的优美与简洁,举例如下。

from shapely.geometry import Point
from shapely.geometry import LineString
from shapely.geometry import Polygon
from shapely.geometry import MultiPoint # 不指定参数类型,实际上相当于无限重载
def outputAllAttributes(mem):
print('geom_type',mem.geom_type)
print('area',mem.area)
print('bounds',mem.bounds)
print('length',mem.length)
print('distance',mem.distance)
print('representative_point',mem.representative_point)
print('\n') def test():
# Point/LineString/Polygon类型的形参通过同一个函数调用,完美体现面向对象中“重载”的思想
p = Point(0,0)
outputAllAttributes(p)
line = LineString([(0,0), (0,1), (1,1),(1,0)])
outputAllAttributes(line)
poly = Polygon([(0,0), (1,1), (1,2)])
outputAllAttributes(poly) if __name__ == '__main__':
test() 

2 Python函数是传值还是传引用

看了一贴,链接如下。

https://www.cnblogs.com/loleina/p/5276918.html

结论:python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。这种方式相当于传值和传引用的一种综合。

如果函数收到的是一个可变对象(Number,String, Tuple)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。

如果函数收到的是一个不可变对象(List,Dictionary,Set)的引用,就不能直接修改原始对象--相当于通过“传值'来传递对象。

3 python打包与生成.exe文件

https://blog.csdn.net/orangefly0214/article/details/81462245
# 介绍了setuptools的用法
https://www.cnblogs.com/mywolrd/p/4756005.html
# 介绍了将朋友python程序打包成linux/windows可执行文件的操作方法 

4 bug修复

(1)python  matplotlib中文显示有问题。

https://jingyan.baidu.com/article/908080223cd201fd91c80fd5.html

(2)How to get the mpl_toolkits to install

https://github.com/matplotlib/matplotlib/issues/4546/
conda install pyqt #神奇地解决了

5 python编程惯例

https://github.com/jackfrued/Python-100-Days/blob/master/Python%E7%BC%96%E7%A8%8B%E6%83%AF%E4%BE%8B.md

(1)if __name__ == '__main__':

代码既可以导入,又可以执行

(2)in: 包含和迭代

if x in items:     # 包含

for x in items:   # 迭代

(3)zip组合键和值来创建字典

keys = ['', '', '']
values = ['骆昊', '王大锤', '白元芳']
d = dict(zip(keys, values))
print(d)

46 python学习笔记的更多相关文章

  1. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  2. Python学习笔记,day5

    Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...

  3. Deep learning with Python 学习笔记(1)

    深度学习基础 Python 的 Keras 库来学习手写数字分类,将手写数字的灰度图像(28 像素 ×28 像素)划分到 10 个类别 中(0~9) 神经网络的核心组件是层(layer),它是一种数据 ...

  4. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  5. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

  6. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  7. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  8. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  9. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

随机推荐

  1. css负边距之详解(子绝父相)

    来源 | http://segmentfault.com 原文 |  The Definitive Guide to Using Negative Margins   自从1998年CSS2作为推荐以 ...

  2. QList和QVector等容器的区别:(转)

    源地址:https://blog.csdn.net/qq_33266987/article/details/53333373 Qlist.QVector 与 list.vector似乎不太类似: li ...

  3. spring boot 与微服务之间的关系

    Spring Boot 和微服务没关系, Java 微服务治理框架普遍用的是 Spring Cloud. Spring Boot 产生的背景,是开发人员对 Spring 框架越来越复杂的配置吐槽越来越 ...

  4. ECMAScript 6学习总结

    学习ECMAScript 6 一.什么是ES6 ECMAScript6是ECMAScript的升级,实现用来编写复杂程序项目. 二.ECMAScript和JavaScript的关系 JavaScrip ...

  5. 分布式项目中增加品牌前端页面出现Uncaught Error: [$injector:modulerr] bug后的原因以及改正方式

    分布式查询品牌页面时 controller路径正确访问,比如输入 http://localhost:8081/brand/findPage.do?page=3&rows=6 是可以正常显示数据 ...

  6. PHP ftp_pasv() 函数

    定义和用法 ftp_pasv() 函数把被动模式设置为打开或关闭. 在被动模式中,数据连接是由客户机来初始化的,而不是服务器.这在客户机位于防火墙之后时比较有用. 语法 ftp_pasv(ftp_co ...

  7. 简单的使用Qt的QCustomplot画图

    一.新建一个widget工程 二.将Qcustomplot文件复制到项目下 三.右键qt项目增加已存在的文件 四.在.pro中添加 QT += widgets printsupport 五.在.h中添 ...

  8. Android中如何做到自定义的广播只能有指定的app接收

    今天没吊事,又去面试了,具体哪家公司就不说了,因为我在之前的blog中注明了那些家公司的名字,结果人家给我私信说我泄露他们的题目,好吧,我错了...其实当我们已经在工作的时候,我们可以在空闲的时间去面 ...

  9. vfs_path_lookup

    1: void lookupInode() 2: { 3: struct dentry* root_dentry; 4: struct vfsmount* root_mnt; 5: const cha ...

  10. 前端(八)—— 高级布局:文档流、浮动布局、流式布局、定位布局、flex布局、响应布局

    高级布局:文档流.浮动布局.流式布局.定位布局.flex布局.响应布局 一.文档流 1.什么是文档流 将窗体自上而下分成一行一行,块级元素从上至下.行内元素在每行中从左至右的顺序依次排放元素 2.本质 ...