Python3 学习笔记(三)——函数

Overview 书接上文:《Python3 学习笔记(二)——基本语法篇》 Day 3 - 学习函数 Code Sample Python 除了关键字(keyword)、内置的类型(built-in)和函数(function), 更多的功能是通过library(即 module1 )来提供的。 引用的语法有如下几种方式: import math, os # 可以使用逗号分隔多个库 from twisted.internet import reactor # 可以从某个库的某个类中引入 from bs4 import BeautifulSoup as bs # 可以给引入的库设置别名 函数的格式和上一篇提到的 if 判断语法很相似: def foo(parameters): #...

Python3 学习笔记(二)——基本语法篇

Overview 书接上文:《Python3 学习笔记(一)——环境搭建篇》 Day 2 - 学习基本语法 Code Sample Python的语法比较简单,采用缩进方式,写出来的代码就像下面的样子: # print absolute value of an integer: a = 100 if a >= 0: print(a) else: print(-a) 以 # 开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号 : 结尾时,缩进的语句视为代码块。 缩进有利有弊。好处是强迫你写出格式化的代码,但没有规定缩进是几个空格还是Tab。按照约定俗成的管理,应该始终坚持使用4个空格的缩进。 缩进的另一个好处是强迫你写出缩进较少的代码,你会倾向于把一段很长的代码拆分成若干函数,从而得到缩进较少的代码。 缩进的坏处就是“复制-粘贴”功能失效了,这是最坑爹的地方。当你重构代码时,粘贴过去的代码必须重新检查缩进是否正确。此外,IDE 很难像格式化 Java 代码那样格式化 Python 代码。...

Python3 学习笔记(一)——环境搭建篇

Overview 为什么要学 Python ? 玩蛇界的人都知道一句话:“人生苦短,我用 Python 。” (Life is short, use Python!) 从技术的角度来说: Python可以写爬虫,开发后端、前端页面(比如豆瓣),能用于运维,能做自动化测试,能写树莓派,可以写游戏(比如:战地2,文明4),能做深度学习、大数据、神经网络……大名鼎鼎的 GAE 也支持 Python。所以根本不用担心学无所用。 Day 1 - 搭建开发环境 安装 Python macOS 用户请确认已安装 Homebrew: brew --version Homebrew 1.1.5 Homebrew/homebrew-core (git revision 6595; last commit 2016-09-07) 安装很简单: $ brew...

objc_msgSend消息传递学习笔记 (消息转发)

原文:《objc_msgSend消息传递学习笔记 - 消息转发》@desgard.com 该文是 《objc_msgSend消息传递学习笔记 - 对象方法消息传递流程》 的基础上继续探究源码,请先阅读上文。 消息转发机制(Message Forwarding) Objective-C 在调用对象方法的时候,是通过消息传递机制来查询且执行方法。 如果想令该类能够理解并执行方法,必须以程序代码实现出对应方法。 但是,在编译期间向类发送了无法解读的消息并不会报错,因为在 runtime 时期可以继续向类添加方法, 所以编译器在编译时还无法确认类中是否已经实现了消息方法。 当对象接受到无法解读的消息后,就会启动消息转发机制,并且我们可以由此过程告诉对象应该如何处理位置消息。 本文的研究目标:当 Class 对象的 .h 文件中声明了成员方法,但是没有对其进行实现,来跟踪一下 runtime 的消息转发过程。于是创造一下实验场景: 同上一篇文章一样,定义一个自定义 Class DGObject ,并且声明该 Class 中拥有方法 - (void)test_no_exist; ,而在 .m 文件中不给予实现。在 main.m 入口中直接调用该类某实例的 - (void)test_no_exist;...

objc_msgSend消息传递学习笔记 (对象方法消息传递流程)

原文:《objc_msgSend消息传递学习笔记 - 对象方法消息传递流程》@desgard.com objc_msgSend消息传递学习笔记 - 对象方法消息传递流程 在《Effective Objective-C 2.0 - 52 Specific Ways to Improve Your iOS and OS X Programs》一书中,tip 11主要讲述了 Objective-C 中的消息传递机制。这也是 Objective-C 在 C 的基础上,做的最基础也是最重要的封装 Static Binding And Dynamic Binding C 中的函数调用方式,是使用的静态绑定(static binding),即在编译期就能决定运行时所应调用的函数。而在 Objective-C 中,如果向某对象传递消息,就会使用动态绑定机制来决定需要调用的方法。而对于 Objective-C 的底层实现,都是...