Python基础_Day04
程序员文章站
2024-03-17 16:22:22
...
1.听写
系统随机生成一个1-100之间的数
判断这个数是否是质数
2.循环语句
循环嵌套: 循环语句的嵌套
什么时候使用循环嵌套?
某个重复的操作是循环
案例:
打印 ****** [一个一个星的打印]
打印 ******
3.函数
什么叫做函数?
在程序中包含独立功能的一段代码, 又称之为方法
例子:
求半径为5的圆的面积
s = 3.1415 * (5 ** 2)
求半径为17的圆的面积
s = 3.1415 * (17 ** 2)
求半径为9的圆的面积
s = 3.1415 * (9 ** 2)
就可以封装一个求圆的面积的功能,当需要这个功能时,直接调用功能即可---> 好处: 提高了代码的复用率, 降低代码重复量
格式:
def 函数名(参数1, 参数2,.. 参数n):
函数功能体
return 功能结果
介绍声明每部分的含义:
def--->声明函数的关键字
函数名--->封装的功能的名字
注意:符合标识符规范
自定义名字尽量做到见名思意
函数名字声明时都是小写字母,每个单词之间最好使用下划线隔开
get_circle_area
小括号中的参数:
形参[形式参数] --->用于接受调用者调用功能时传递未知项的具体数据,它是一个变量
实参[实际参数] --->调用者调用功能传递的具体数据
return--->结束函数,并将函数运行结果返回给调用者
有些功能没有结果的返回 return语句可以省略 或者写 return None
刚接触函数的时候:
两个明确--->辅助完成函数的声明
1.明确是否有未知项参与运算[有几个]
2.明确调用者是否需要功能的结果
功能调用:
res = 函数名(实际参数1, 实际参数2,..实际参数n)
讲解:
1.传递的实际参数是根据声明函数的形参个数决定的, 并且实际参数的值要与声明函数的形参位置是一一对应的
2.如果函数功能有结果的返回 可以使用一个变量来进行接受
print 把结果送达了控制台 并没有把结果回馈给调用的地方
如果想在调用的地方获得结果 使用return在函数中进行回馈
3.1内存结构
内存结构 —>对比成屋子
屋子:卧室
客厅--->公共区域
卫生间
厨房
内存结构:
栈区 [内容的生命周期: 方法执行完成之后会立即释放 在内存中消失 ]
运行着的方法: 在方法池中拷贝一份到栈中运行
栈的特点: 先进后出
堆区
存放的是变化的对象
列表
元组
字典
集合 等等对象
生成一个内容就会占用一个新的地址
方法区 [生命周期是随着程序走的]
内部又分了不同的区域:
常量池:
存放的是确定的数据 [数据一旦出现 形态就确定了 不会发生变化]
整数数值 7
字符串数值 "a"
常量池特点:
给变量设置数时 先在常量池中尽行查找 如果找到的话 直接使用
如果找不到 先在常量池中存储 然后再赋予给变量
静态池:
之后将面向对象的时候再说存放内容
方法池:
声明出来的方法 是存放在方法池中的
本地方法区--->原生的内容
寄存器 寄存器上的内容运行速率特别快 但是存储的内容是由CPU决定的
3.2 函数的执行流程 - 方法压栈
3.3 变量的分类以及变量的作用域
全局变量:
作用范围: 作用于整个py文件
局部变量:
在函数内部声明的变量称之为局部变量,
作用域: 仅作用于当前函数 出了函数没有任何意义
包含: 形参和在函数内部声明的变量
修饰词关键字: global
当在函数内部使用的变量要与外部的全局变量关联,这个时候需要告知解释器关联度在函数内容对应的变量使用global进行修饰
3.4默认参数
形参有一个默认值 调用函数时 如果不给形参赋值 使用自己的默认值参与运算
print(values, sep=" ", end="\n")
案例:
求x的y次方
这个功能默认求的是x的平方
3.5递归算法
算法/设计模式: 前辈们总结出来的解决某种问题地 经验
递归算法的格式:
在函数内部调用函数本身的这种格式就是递归
斐波拉契数列
第一个月一开始有一对兔子 到从第三个月开始每个月生一对小兔子 小兔子长到从第三个月开始每个月也生一对小兔子 假设兔子不死 问8个月之后总共有多少对兔子
注意事项:
递归一定要有出口[肯定存在已知项]
否则: 每调用一次函数就像栈中压入一个函数 --->一直到栈中放不下 栈溢出为止 程序崩溃
3.6转义符
\转义符 — 转义其后面其他字符的含义
\n ---- 换行
\t ---- 制表符 tab
\r ---- 换行
上一篇: 容器监控之 cadvisor
下一篇: 输入输出外挂