Python基础—06-函数基础
函数基础
函数简介
- 定义:就是具有特定功能的一段代码
- 优点:
- 解决代码的重复书写
- 可以将功能的实现着和使用者分开,提高开发效率
- 分类:
- 库函数:print、input、abs等
- 自定义:用户自己封装的函数
函数使用
定义函数格式
def 函数名([参数列表]):
函数体[]表示可选,参数可以有,也可以没有,也可以是多个。
函数名:
- 与变量一样,只要遵循标识符的命名规范即可。
函数调用:
- 函数定以后不会执行,需要调用才会执行
- 调用格式:
函数名([参数])
函数分类(参数与返回值)
# 无参无返回值
def print_hello():
for i in range(10):
print('Hello world!') # print_hello()
# 带参数无返回值
def print_n_hello(n):
for i in range(n):
print('Hello world!') # print_n_hello(5) # 带参有返回值
def add(m, n):
c = m + n
# 使用return返回需要返回的值,不返回默认为None
return c print(add(3, 5))
分类的标准是按照有无参数,以及有无返回值。
函数参数
形参:形式参数,就是写在函数定义出的参数
实参:实际参数,就是在函数调用时传递的参数
位置参数:也叫必传参数,没有默认值的参数
默认参数:定义时有默认值,调用时可以不传,必须写在最后
关键字参数:在函数调用时指定参数名字,参数的位置就无所谓。
可变长度参数:函数调用时可以传递比定义处更多的参数,多出来的参数会保存在args和kwargs中
def var_len_args(a, b, name='goudan', *args, **kwargs):
print(a, b)
print(name)
# 是一个元组,保存多传的位置参数
print(args)
# 是一个字典,保存多传的关键字参数
print(kwargs) var_len_args(1, 2, 3, 4, age=10)
*的使用:
def show(a, b):
print(a, b) lt = [1, 2]
# 需要从列表根据下表获取元素,然后作为参数传递
# show(lt[0], lt[1])
show(*lt) def show2(aa=11, bb=22):
print(aa, bb) d = {'aa': 123, 'bb': 456}
# show2(aa=d['aa'], bb=d['bb'])
# 上下等价
show2(**d)
函数进阶
- 函数的定义位置是随意的?
- 不是,一定是先定义后调用,函数的调用一定要放在定义之后。
- 函数的名字可以相同吗?
- 不可以,若出现同名函数,后者会覆盖前者。
- 函数内容能否再定义函数?
- 可以,定义在函数内部的函数叫内部函数,它是很多高级功能实现的基础。
变量的作用域
块级作用域
if True:
name = 'guanyu' # 能够在块的外部使用,说明没有块级作用域
print(name)局部作用域
- 局部变量:定义在函数内部的变量叫局部变量,只能在函数内部使用。
def test():
a = 10 # 不能再函数外部使用,此处会报错
print(a)全局作用域
- 全局变量:定义在函数外部的变量叫全局变量,哪里都可以使用
num = 10 def show():
# 声明使用的时外部的同名变量
global num
# 只能使用,不能修改,若想修改协议进行全局声明
num = 20
print(num) show()
print(num)- 函数内部可以使用外部变量,但是不能修改
- 若修改需要使用
global进行全局声明 - 当函数内部与外部出现同名变量,默认使用的时内部变量
nonlocal使用
- 说明:内部函数使用外部函数的局部变量,需要使用nonlocal进行声明
def wai():
n = 10
def nei():
# 声明使用非本地变量,外部函数的局部变量
nonlocal n
n = 20
print(n)
nei()
print(n) wai()
递归函数(了解)
- 定义:函数内部调用函数本身的函数叫递归函数。
- 组成:
- 函数内部调用自己
- 终止条件(停止调用自己的条件)
- 核心算法(具体功能)
- 特点:
- 代码简洁
- 可读性差(不易理解)
- 瞬间占用内存较大,没有终止条件立即崩溃
- 有些领域是禁止使用的(安全领域:汽车电子)
- 只有在不得不使用的时候才使用(遍历目录)
- 练习:(可以做个小练习来巩固)
- 求n的阶乘
- 斐波那契数列的第n项
- 前两项都为1,从第三项开始,每一项都等于前两项的和
- 如:
1,1,2,3,5,8,13,21,...
常用函数
内置函数(无需导入)
print:打印,输出
input:输入
abs:求绝对值
type:获取变量的类型
chr:将ASCII数值转换为字符
ord:将字符转换为对应的ASCII
id:获取变量地址
len:统计元素个数
range:产生连续整数的可迭代对象
enumerate:枚举可迭代对象 强制类型转换:
int
float
str
list
tuple
set
dict max:求多个参数的最大值,或可迭代对象中的最大元素
min:最小值
sum:求和,可迭代对象元素求和
pow:求幂,pow(2, 3)等价于2 ** 3
round:四舍五入,可以指定保留位数 hex:16进制
oct:8进制
bin:2进制模块函数(需要导入)
time:
sleep:休眠指定的秒数,可以是小数
math:
e:自然对数
pi:圆周率
ceil:向上取整
floor:向下取整
sqrt:开方(请平方根)
degrees:弧度转换为度
radians:度转换为弧度
sys:
argv:运行程序时所有的命令行参数列表,第一个是程序文件名
练习:完成一个计算器,支持加、减、乘、除运算
Python基础—06-函数基础的更多相关文章
- Python学习笔记-函数基础
函数基础 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 为什么使用函数:减少重复代码.使程序变的可扩展使程序变得易维护 1.定义一个函数 #定 ...
- python学习总结 --函数基础
函数基础 ### 函数简介 - 定义:具有特定功能的一段代码 - 优点: - 可以减少代码的重复书写 - 可以将功能的实现着和使用者分开,可以提高开发效率 - 分类: - 库函数:print.inpu ...
- Python学习day9 函数Ⅰ(基础)
函数Ⅰ(基础) 三目运算 基本结构 v = 前面 if 条件 else 后面 #条件为真v=前面,条件为假v=后面.#等同于if 条件: v = '前面'else: v = '后面' ...
- Python 入门基础10 --函数基础3 函数对象、名称空间、装饰器
今日内容 1.函数对象 2.名称空间与作用域 3.函数的嵌套调用与闭包 4.装饰器 一.函数对象 1.1 定义 函数名存放的就是函数地址,所以函数名也就是对象,称之为函数对象 1.2 函数对象的应用 ...
- Python 入门基础11 --函数基础4 迭代器、生成器、枚举类型
今日目录: 1.迭代器 2.可迭代对象 3.迭代器对象 4.for循环迭代器 5.生成器 6.枚举对象 一.迭代器: 循环反馈的容器(集合类型) 每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的 ...
- Day9 Python基础之函数基础(七)
参考链接:https://www.cnblogs.com/yuanchenqi/articles/5828233.html 1.函数的定义 定义: 函数是指将一组语句的集合通过一个函数名封装起来,要想 ...
- python学习日记(函数基础)
修改文件(原理)--回顾 #修改文件(原理) with open('name','r',encoding='utf-8') as f,\ open('password','w+',encoding=' ...
- Python 入门基础12 --函数基础5 匿名函数、内置函数
今日内容: 1.三元表达式 2.列表.元组生成式 | 字典生成式 3.递归 4.匿名函数 5.内置函数 一.三元表达式 三元运算符:就是 if...else... 语法糖 前提:if 和 else # ...
- python学习之函数基础
第一个python函数: >>> def func_1(): ... print 'hello python' ... >>> func_1() hello pyt ...
- python学习之【第八篇】:Python中的函数基础
1.前言 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2.函数的定义 定义函数时需要遵守以下规则: 函数代码块以 def 关键词开头 ...
随机推荐
- Apache-Maven 的安装及配置
一. 下载 没有 Maven 的朋友可以去 Apache 的官网下载一个 Maven, Apache-Maven 官网下载 : https://maven.apache.org/download.cg ...
- /Date(1410019200000+0800)/如何转换为date对象
<script type="text/javascript">var s = '/Date(1410019200000+0800)/ '; s.replace(/Dat ...
- Javaweb三大组件-过滤器、监听器
1. 过滤器 [filter] 作用: 对单个获取多个servlet起到增强[advice]的作用. 用于在所有的servlet执行前,做一些预处理.例如:做编码处理, 访问量统计[servletCo ...
- Servlet中listener(监听器)和filter的总结
Listener 我是这样理解他的,他是一种观察者模式的实现:我们在 web.xml 中配置 listener 的时候就是把一个被观察者放入的观察者的观察对象队列中,当被观察者触发了注册事件时观察者作 ...
- Resharper 的快捷键
编辑 Ctrl + Space 代码完成 Ctrl + Shift + Space代码完成 Ctrl + Alt + Space代码完成 Ctrl + P 显示参数信息 Alt + Inser ...
- rest-framework框架——解析器、ur控制、分页、响应器、渲染器、版本
一.解析器(parser) 解析器在reqest.data取值的时候才执行. 对请求的数据进行解析:是针对请求体进行解析的.表示服务器可以解析的数据格式的种类. from rest_framework ...
- Celery-------项目目录
在实际应用中Celery的目录是有规则的 要满足这样的条件才可以 目录Celery_task这个名字可以随意,但是这个目录下一定要有一个celery.py这个文件 from celery import ...
- jQuery Ajax(异步改同步)
在实际使用中,我们经常会用的Ajax(异步加载,在不刷新整个网页的前提下对网页部分内容进行更新) 使用时,偶尔会遇上需要从一个接口中得到一个数组和数据对应的id,在另一个接口上再得到数据,最初写法如下 ...
- ASP.NET MVC 音乐商店 - 5 通过支架创建编辑表单 续
查看 StoreManager 控制器的代码 现在,Store Manager 控制器中已经包含了一定数量的代码,我们从头到尾重新过一下. 首先,在控制器中包含了标准的 MVC 控制器的代码,为了使用 ...
- 模拟ArrayList
package com.helloidea; import java.util.ArrayList; import java.util.Collection; import java.util.Lis ...