Task 04 变量与函数 Variables and Functions

Task 04 变量与函数 Variables and Functions

变量 variables

变量的概念老生常谈,便于理解,简单说明即可

基本概念

  • 变量是一个名字,指代它所覆盖的数据
  • 变量需要赋值,使用 =
  • 在python中,没有指针的概念,但也可以说每一个变量都是一个指针
a = 8   #python在变量命名是不需要提前说明变量类型(python天下第一)
print(a)
8
print(a-2)
6
  • 新的值可以覆盖旧的值
  • 新的数据类型不必与旧的相同
a = True
print(a)
True
a = "振翅云顶之上,极目星辰大海"
print(a)
振翅云顶之上,极目星辰大海

变量命名规则

  • 必须以字母或下划线(_)开头
  • 命名可由字母、数字和下划线组成
  • 大小写敏感
  • 尽量避免使用保留字命名

保留字

import keyword
print(keyword.kwlist)
['False',
 'None',
 'True',
 '__peg_parser__',
 'and',
 'as',
 'assert',
 'async',
 'await',
 'break',
 'class',
 'continue',
 'def',
 'del',
 'elif',
 'else',
 'except',
 'finally',
 'for',
 'from',
 'global',
 'if',
 'import',
 'in',
 'is',
 'lambda',
 'nonlocal',
 'not',
 'or',
 'pass',
 'raise',
 'return',
 'try',
 'while',
 'with',
 'yield']

多变量命名

python支持多变量命名,方式如下

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

函数 Functions

函数概念

  • 函数是一个代码块,可以被反复调用,执行功能
  • 函数由两部分组成,即 headerbody
  • 函数在项目中会大量使用,完成分段式编程,以防部分代码出错牵连整个程序

header用来定义函数的名称和参数

  • header以 结尾,并在后面跟着 body部分
  • 当函数被调用时,括号内的参数会被提供给函数进行后续运行
  • 可以提供多个参数

header具体写法

def name(x):
    pass         #pass表示临时组建函数并且不被调用
                 #python对缩进十分敏感

body

  • body中包含函数的主体部分,也就是参数被传入后执行的具体操作
  • body结束后一般会用return返回值,当然并不绝对
  • 缩进很重要

在这里写一个完整的函数作为示例

def yunding(x):
    print("振翅云顶之上,极目星辰大海")
    return x
print(yunding(me))
振翅云顶之上,极目星辰大海
me
  • 函数名调用函数
  • 函数会返回一个值,但并不是直接打印一个值

函数的参数可以有很多个, 也可以没有,但是数量一定要匹配

多返回值

多返回值相当于返回了一个 list

def Multi_Return_Values():
    return 6,6,6
a,b,c = Multi_Return_Values()
print(f"a={a}, b={b}, c={c}")
a=6, b=6, c=6

内置函数

在python中,有一些官方内置的函数

强制类型转换

类型转换也是一种函数,比如将浮点数转换为整数

a = 5.2
print(a)
5.2
int(a)
print(a)
5        #转换为整型后没有小数点

基本数学函数(无需调用math库)

print(abs(-5))   # 绝对值
5
print(max(2,3))  # 返回最大值
3
print(min(2,3))  # 返回最小值
2
print(pow(2,10))  # 次方运算,等价于 2**10
1024
print(round(2.354, 2)) # 取最近的一个整数(并不完全是四舍五入,二进制精度丢失) ## 保留两位小数,用round(四舍五入表示的是二进制小数(或者用decimal库来避免))
2.35

变量作用域

每个变量都有自己的作用范围,超出范围后变量不存在,并且一定要尽量避免使用全局变量

  • 函数内定义的变量仅在函数内部作用
  • 函数外定义的变量是全局变量,如果想在函数内改变它的值需要声明它是全局变量
g = 100

def f(x):
    global g          #对变量进行声明,否则python会假设它是局部变量
    g += 1
    return x + g

print(f(5))
print(f(6)) 
print(g)    
106
108
102

嵌套函数(递归)

对于嵌套函数来说,一定会先执行最内层的函数

嵌套函数运用最广的地方就是递归,而递归是一种重要的编程思想,在这里我们着重讲解

递归的概念

递归(recursion)是一种算法策略,通过函数调用自身来解决问题。他主要包含两个阶段

  • 递:程序不断地调用自身,通常是传入更小或更简化的参数,直到达到 "终止条件"
  • 归:触发"终止条件"之后,函数从最深层的递归函数逐层返回,并汇聚每一层的结果

递归函数的三个要素

  • 终止条件:在触发 终止条件后,由
  • 递归调用:参考概念中的
  • 返回结果:参考概念中的

如果实在理解不了递归,似乎也可以用这三个条件硬写

思考

事实上到此为止我对于递归的理解也极为有限,所以说一些我对于递归的思考

  • 递归是一个从上到下解决问题的过程,将原问题一直分解为更小的子问题,在遇到终止条件后逐级返回,当然这样的思想十分反人类,所以写的时候千万不能多想
  • 递归每一次调用自身时,系统都会为新开启的函数分配内存,因此递归的时间效率较低,太深可能会导致栈溢出
  • 尾递归还看不懂,先丢个链接吧

hello算法:迭代与递归

终于把递归的笔记完善,或者说搞懂递归哦,已经过了ddl,代码风格的一定会在明写完的()

posted @ 2024-12-05 00:54  江离111  阅读(27)  评论(0)    收藏  举报