Python基础03变量与函数

###### Chapter 3 变量与函数 Variables and Functions##########

####变量:标签 物理空间存储的位置 调用的时候会指向“门牌号”

x = 5

print(x)

print(x*2)

y = 10

print(y - 2)

y = True##布尔类型

print(y)

#新的值会覆盖掉旧的值!!!

#新值的数据类型不必与旧值相同



## 变量命名规则:

#必须以字母或下划线(_)开头

#命名可由字母、数字和下划线组成

#大小写敏感!!!!!

#尽量避免使用保留字命名'False','None','True','__peg_parser__''and',as',



numberOfRabbits = 40

courseIs15112 = True



import keyword

keyword.kwlist ##保留字

print(keyword.kwlist)



#更新变量

x = 5

x += 2 # 等价于 x = x + 2

print(x) # 7



# 换成其他运算符也是同理

y = 350

y //= 10

print(y) # 35



## 多变量赋值

a = b = c = 2

print(f"a={a}, b={b}, c={c}")

a, b, c = 1, 2, 6 ###元组的解包

print(f"a={a}, b={b}, c={c}")



# 函数 Functions

# 函数是一个名字,代表一串代码序列(流程、过程)

# 函数由两个部分组成:header 和 body

# header 用于定义函数接口(函数名称与参数)

   ###当函数被调用时,参数将会作为变量被提供给函数的

   ###部分body可以提供多个参数(用逗号 分隔),也可以不提供参数(0 个)

   ###header 以冒号()结尾,代表后面会跟着 部分:body

# body 包含函数所需要执行的语句()statement

   ###语句需要缩进(由 Code Style Guide 决定)

   ###当语句不再缩进,函数部分结束

   ###一般会使用 语句,来让函数返回其结果,但不是必须的return

   ###类似于用一个 来对多个变量赋值,函数的返回结果也可以不止一个(用逗号 分隔)=,

def functionName(parameters):

    pass # 函数的 body 部分,这里使用 pass 代替



def double(x):

    print("double函数输出x*2:",2*x)

    return 2 * x ###可以不return

print(double(2))

print(double(1) + 3)




# 三个参数

def f(x, y, z):

    return x + y + z

print(f(1, 3, 2)) # 返回 6



# 无参数 调用的时候不能输入参数

def g():

    return 42

print(g()+1) # 返回 43



#多返回值

def Multi_Return_Values():

    return 9, 2, 8

a, b, c = Multi_Return_Values()

print(f"a={a}, b={b}, c={c}")



###语句与表达式 Statements and Expressions

##对于表达式 它本身是值 它的计算结果是值

##对于语句 它不是值 它不能打印 但它能执行一些操作

print(4)

print("Hello World")

print(7 + 2)

print( False or True)

print((2 < 3) and (9 > 0))




#####内置函数 Builtin Functions

print(bool(0))  #False # 转换为布尔类型(True or False)

print(bool(1))  #True

print(bool(-1)) #True

print(float(42)) # 转换为浮点数

print(int(2.8))  # 转换为一个整数(舍弃小数点)



##一些基本数学函数不在库中math

print(abs(-5))   # 绝对值

print(max(2,3))  # 返回最大值

print(min(2,3))  # 返回最小值

print(pow(2,10))  # 次方运算,等价于 2**10

print(round(2.354, 2)) # 取最近的一个整数(并不完全是四舍五入,二进制精度丢失)




###变量作用域 Variable Scope

#每个变量都有属于自己的作用范围 超出作用范围后,变量不可见

def f(x):

    print("x:", x)

    y = 5 ####局部变量,不在全局变量;内部的改变不影响外部。

    print("y:", y)

    print("x+y:")

    return x + y

print(f(4))

print(x) # crash!

print(y) # crash!找的是全局变量,此时输出的是前面赋值的全局变量



##函数内的变量具有局部作用域,它只存在于函数内部,与其他函数中的同名变量无关

def f(x):

    print("In f, x =", x)###x=4

    x += 5

    return x



def g(x):  #### in g, x=2

    y = f(x*2)   ##### in f ,x=4

    print("In g, x =", x)

    z = f(x*3)   ####  in f,x=6

    print("In g, x =", x)

    return y + z ##y=9,z=11



print(g(2))  #给定x=2




from IPython.display import IFrame

#IFrame('https://nbviewer.org/github')链接暂时不完整



def f(x):

    print("In f, x =", x)

    x += 7

    return round(x / 3)##四舍五入3



def g(x): #6

    x *= 10

    return 2 * f(x)



def h(x):

    x += 3

    return f(x+4) + g(x) # 6+44



print(h(f(1)))#50




#函数外部定义变量时,变量具有全局作用域,在任何地方都可以使用

#尽量避免使用全局变量,但是在非常少的一些场合会需要用到它

g = 100

def f(x):

    # 如果想要修改 g 的值,必须声明它是全局变量

    # 否则 Python 会假设它是局部变量

    global g

    g += 1 #101

    return x + g

print(f(5)) # 105 101+5

print(f(6)) # 106 102+6

print(g)    # 100 102



##返回语句 Return Statements

def isPositive(x):

    return (x > 0)

print(isPositive(5))  # True

print(isPositive(-5)) # False

print(isPositive(0))  # False



def isPositive(x):

    print("Hello!")   # 会运行

    return (x > 0)    #遇到return就会结束

    print("Goodbye!") # 不会运行



print(isPositive(5))  # 输出 “Hello!” 然后返回 True




#没有返回语句的时候,函数会返回 None

def f(x):

    x + 42

print(f(5)) # None



def f(x):

    result = x + 42

print(f(5)) # None




### 函数中 Print versus Return

def cubed(x):

    print(x**3)  # 这里的操作不太合适

cubed(2)  #8 但是似乎看起来也正常运行了



print(cubed(3))  # 27 应该也能有效(但是返回 None,太怪了)

#print(2*cubed(4)) # Error!



def cubed(x):

    return (x**3) # 这样做更好



cubed(2)  #输出被忽略了

print(cubed(3))  #27有效了

print(2*cubed(4))  #128也是有效的

##用return需要print(f())





#函数组合 Function Composition

#对于嵌套的函数而言,应该最先运行最内层的函数

def f(w):

    return 10*w



def g(x, y):

    return f(3*x) + y  #在我们返回它之前,我们必须先执行 f(3*x)



def h(z):

    return f(g(z, f(z+1)))  # 最内部的 f(z+1) 必须先执行



print(h(1)) # z=1 f(2)=20 g(1,20)=f(3)+20=50 f(50)=500



#### Helper Functions编写函数是用来解决问题的

#可以编写函数来存储那些经常被用到的一系列操作

def onesDigit(n):

    return n%10##返回个位数



def largerOnesDigit(x, y):

    return max(onesDigit(x), onesDigit(y))

##找到最大的个位数

print(largerOnesDigit(134, 672)) # 4

print(largerOnesDigit(132, 674)) # 4



###总结

#变量只是个标签,物理设备上的位置才是重点

#函数定义:、header、body、缩进、defreturn

#函数是有作用域的,类似双层玻璃,里面可以看见外面,外面不能看见里面

#Helper Function 有时候会很有用

你可能感兴趣的:(python,python,numpy,开发语言)