《像计算机科学家一样思考Python》学习笔记

前言

  作为计算机科学家,最重要的技能就是问题求解。所谓问题求解,是发现问题、创造性思维解决方案以及清晰准确地表达解决方案的能力。而学习编程的过程,正是训练问题求解能力的绝佳机会。

重要的中英文互译

  1. 可移植性(portability):程序的一种属性:可以在多种类型的计算机上运行。
  2. 解释器(interpreter):一个读取其他程序并执行其内容的程序。
  3. 记号(token):即语言的基本元素,比如单词、数字等;3+¥=6中的¥在数学表达式中就不是合法的记号;
  4. 语法(syntax):用于控制程序结构的规则。
  5. 语法分析(parse):检查程序并分析其语法结构。
 常见的语法错误示例:
 SyntaxError:invalid token
 意思是:
 语法错误:无效的记号
  1. 交互模式(interactive mode):使用Python解释器的一种方式,在提示符之后键入代码。
  2. 脚本模式(script mode):使用Python解释器的另一种方式,从脚本中读入代码并运行它。
  3. 脚本(script):保存在文件中的程序。
  4. 异常(exception):程序运行中发现的错误。
  5. 模块(module):包含一组相关的函数的文件。
  6. 句点表示法(dot notation):调用模块中包含的函数的方法。

Python小白与大神的区别

条件表达式

if x > 0:
	y = math.log(x)
else:
	y = float('man')

  用条件表达式改写后:

y = math.log(x) if x > 0 else float('man')

列表高端操作

def test(t):
	res = []
	for s in t:
		res.append('a')
	return res

  用列表的高端写法后:

def test(t):
	return ['a' for s in t] # 列表可以通过[]赋值直接修改

  但下面的写法是错误的:

def test(t):
    res = []
	return res.append('a') for s in t # 没有这种写法!!!
会直接报错

收集关键词参数

  我们知道*操作符作为形参,可以使函数接受任意个数的实参数量,如下函数:

def printall(*args):
	print(args)

  但实际上,*操作符不会收集带有关键字(名称)的实参,比如:

printall(1, 2.0, '3') # 这种写法可以调用
printall(1, 2, third='3') # 这种写法会报错,不能接受带有关键字的实参

  我们要记住,不带关键字的实参用*操作符收集为一个元组,带有关键字的实参用**操作符收集为一个字典,不能混收

>>> def printall(*args, **kwargs):
>>>		print(args, kwargs)
>>> printall(1, 2, third='3')
(1, 2) {
   'third': '3'}

第一章

何谓程序

  程序是指一组定义如何进行“计算”的指令集合,这里的“计算”具有丰富的内涵,可能是解方程根的数学运算;也可能是符号运算,比如搜索和替换文档的文本;或者图形相关的操作,如图像处理。

树立“值才是程序最基本的单位,而不是变量”的概念

  值(value)是程序操作的最基本的东西,比如一个字母、数字或字符串。值有不同的类型。基本上,在任何可以使用值的地方,都可以使用任意表达式
  所谓变量,是指向一个值的名称;变量所具有的类型,就是其指向的值的类型
  从状态图来看可能能更好地理解变量与值的关系:
  下面的赋值语句的状态图如图所示:

message = 'And now for....' # 在此只为强调状态图,有些部分省略
n = 17
pi = 3.14....

在这里插入图片描述
  从状态图可以明显看出,是“变量 指向 值”而不是“值 指向 变量”。

形式语言和自然语言

  自然语言指的就是人们说的语言,比如普通话。
  形式语言是人们为了特殊用途创造的语言,比如编程语言。

第二章

变量及命名

  关于变量的定义在上一章已然介绍过,注意其与值的关系。对于变量的命名,一般是以小写字母开头,在多个单词之间用“_”连接。

表达式和语句的定义

  表达式是值、变量和操作符的集合。
  语句则指的是一段会产生效果的代码单元。

字符串可进行的数学操作

  仅可以进行两个,一个是“*”,一个是“+”。

第三章

模块及其使用方法

  比如说math模块,其中包含了一些数学函数。如果想使用其中的函数,按照如下步骤操作:

1、将模块导入到运行环境中;
import math
2、上述语句将会创建一个名为math的模块对象(module object),该对象中包含了已定义的函数和变量,以一个句点(.)分隔,这个格式称为句点表示法(dot notation)。
height = math.sin(..)

函数的定义

  以“def”关键词定义,如:

def print_ly(): #函数头
	print(...) #函数体

  需要注意的是,函数定义必须在使用它之前。

形参与实参

  在函数定义时参数是形参,调用时的参数是实参。在下面这段代码的例子中,bruce是形参,m是实参:

def print_twice(bruce): # 定义
	....

print_twice(m) # 调用

  另外,函数名本身也可以作为实参输入到函数中进行调用,如下例:

def do_twice(f):
	f()
	f()
def print_spam():
	print('spam')

do_twice(print_spam
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值