CS61A 02. Names

Names, Assignment, and User-Defined Functions

Built-in functions & Names

control + L 清屏 但不改变所处环境

pi   —— name pi is not defined

from math import pi
from math import sin
sin 

sin(pi/2)

define own names

Using Assignment works

radius = 10
area, circ = pi * radius * radius, 2 * pi * radius
max(1,2,3)

f = max
CS61A 02. Names_第1张图片
custom functions
CS61A 02. Names_第2张图片
Screen Shot 2018-01-27 at 17.15.14.png
from operator import add, mul

with a def statement - 3rd way by names to value

def square(x,y):
(一定要退格) return square(x) + suqare(y)

function和name的区别!!!

area =  pi * radius * radius

此时,area 不会随着radius的改变而更新

def area():
    return pi 

reevaluated every time it's called

CS61A 02. Names_第3张图片
Screen Shot 2018-01-27 at 16.08.34.png
CS61A 02. Names_第4张图片
Screen Shot 2018-01-25 at 22.27.46.png

about names

CS61A 02. Names_第5张图片
Screen Shot 2018-01-25 at 22.28.16.png

The answer is 3

Environment Diagrams

Environment Diagrams visualize the interpreter's process

http://pythontutor.com/composingprograms.html#mode=edit

CS61A 02. Names_第6张图片
Screen Shot 2018-01-25 at 22.28.53.png

Execution rule for assignment statements:

  1. Evaluate all expressions to the right of = from left to right.
  2. Bind all names to the left of = to those resulting values in the current frame.
CS61A 02. Names_第7张图片
Screen Shot 2018-01-25 at 22.29.25.png

Defining Functions

CS61A 02. Names_第8张图片
Screen Shot 2018-01-25 at 22.29.54.png
CS61A 02. Names_第9张图片
Screen Shot 2018-01-25 at 22.30.14.png
CS61A 02. Names_第10张图片
Screen Shot 2018-01-25 at 22.30.32.png
CS61A 02. Names_第11张图片
Looking up names in environments

要注意 global frame 和local frame 的区别

print and none

print 和 直接输入看上去结果非常相似,但是还是有许多不同之处,比如直接输入none时不会有任何反应,而print(none)则会真的显示出none来,print还可以显示出多个数值。

CS61A 02. Names_第12张图片
Screen Shot 2018-01-27 at 19.15.27.png

CS61A 02. Names_第13张图片
Screen Shot 2018-01-27 at 19.33.34.png

这时我们发现了一个有趣的现象,当输入print(print(1), print(2))时,显示出了下面这个非常奇怪的结果,这是怎样发生的呢?

1
2
None None

我们要从 display 和 value 的区别说起了。

CS61A 02. Names_第14张图片
Screen Shot 2018-01-27 at 19.33.45.png

pure functions just return value
non-pure functions have side effects (display the output)

print()就是属于 non-pure functions

CS61A 02. Names_第15张图片
Screen Shot 2018-01-27 at 19.33.52.png

第一步:display 1 2,returns None
第二步:display None None, returns None
第三步:None 作为value是不显示的,结束

补充:
// 表示可以被整除

n = n // 2

!= 表示 不等于

while n! = 1:

这样表示谁是谁的公约数

if n % m == 0:

你可能感兴趣的:(CS61A 02. Names)