DAY09、函数
一、函数的定义:跟变量名的定义大同小异
1、声明函数的关键词:def
2、函数(变量)名:使用函数的依据
3、参数列表:() 参数个数可以为0到n个,但()一定不能丢,完成功能的必要条件
4、函数体:实现函数功能的具体代码
5、函数的返回值:return,功能完成的返回信息
例:def fn(moeny):
print('付了%s钱'%money)
print('函数的一行代码')
return'冰红茶'
print(fn,id(fn)) #fn直接打印,只能看到函数存放代码的地址
二、使用函数:函数名()
fn(10)
函数的返回值也称之为函数值,就是函数执行之后得到的结果
可以用变量接受(msg = fn(10))、可以直接打印(print(fn(10)))、可以直接使用
函数执行的本质:执行函数体,得到函数返回值
三、从函数体进行分类:
重点:先定义后调用
1、空函数:项目之初,知道项目有哪些功能,但还没有明确功能体,可以用pass进行函数体填充
例: def computed():
pass
2、非空函数:用函数体
例: def add_num(n1,n2):
return n1 + n2
res = add_num(10,20)
print(res) # 30
四、从参数列表进行分类:
1、无参函数:函数体运行不需要外界提供参数
例:def print_msg():
print('welcome')
print_msg()
2、有参函数:函数体运行需要外界提供参数
例: def print_school_msg(p1,p2):
print('welcome %s and %s'%(p1,p2))
p1 = input('输入名字:')
p2 = input('输入名字')
print_school_msg(p1,p2)
五、从返回值进行分类:
空返回:
1、没有return的函数:
例: def fn1():
print('fn1 run!!!')
res = fn1()
print('没有return的返回值:%s',%res) #None
2、空return
例: def fn2():
print('fn2 run!!!')
return
ren = fn2()
print('空return的返回值,%s'%res) #None
注:没有return函数和空return函数的区别:
空return:可以根据具体情况主动退出函数(像break一样结束循环)
值返回:
1、返回一个值:
例: def add_num(n1,n2):
return n1+ n2
print(add_num(10+15)) #25
def computed(n1, n2):
# 返回四则运算的结果
r1 = n1 + n2
r2 = n1 - n2
r3 = n1 / n2
r4 = n1 * n2
return [r1, r2, r3, r4]
a,b,c,d = computed(10,20)
print(a,b,c,d)
2、返回多个值:本质就是返回装有多个值得元组
def computed_sup(n1, n2):
# 返回四则运算的结果
r1 = n1 + n2
r2 = n1 - n2
r3 = n1 // n2
r4 = n1 ** n2
return r1, r2, r3, r4
a, b, c, d = computed_sup(50, 25)
print(a, b, c, d)
res = computed_sup(10,20)
print(res) #得到的是装有所有结果的元组
六、函数的嵌套使用:在一个函数体中调用另一个函数
注:在解释过程中,不执行函数体,在函数被调用时,函数体才被执行
def max_2(n1, n2):
if n1 > n2:
return n1
return n2 #比较两个数的大小
def max_3(n1, n2, n3):
m2 = max_2(n1, n2)
return max_2(m2, n3) #比较三个数的大小
def max_4(n1, n2, n3, n4):
m2 = max_2(n1, n2)
return max_3(m2, n3, n4) #比较四个数的大小
七、应用场景:
指定文件名的文件复制:
def copy_file(source, target):
'''
:param source: 被复制的文件
:param target: 复制得到的文件
:return: #函数体的注释
'''
with open(source, 'rb') as r, open(target, 'wb') as w:
for line in r:
w.write(line)
copy_file('被复制的文件','复制得到的文件')
八、了解:脚本文件的执行
import sys
# 存放当前文件作为脚本文件执行的参数们:['当前文件的绝对路径', 手动传入的参数们]
# 脚本文件执行:直接用python解释器运行该文件
print(sys.argv)
# D:\fullstack_s4\day09\代码\0.复习.py length = len(sys.argv)
if length > 1:
print("有指令传入")
cmd = sys.argv[1]
if cmd == '1':
print("新建文件")
# f = open('cmd.txt', 'w', encoding='utf-8')
# f.close()
with open(r'D:\fullstack_s4\day09\代码\cmd.txt', 'w', encoding='utf-8') as f:
pass
elif cmd == '2':
print("书写文件")
with open(r'D:\fullstack_s4\day09\代码\cmd.txt', 'w', encoding='utf-8') as f:
f.write("写入内容")
else:
print("指令有误")
else:
print("没有指令传入")
DAY09、函数的更多相关文章
- day09 函数学习
内容详细 1.函数 1.1.面向过程: 可读性差/可重用差 1.2.面向对象:
- python day09 函数(第一篇)
2019.4.9 S21 day09笔记总结 一.三元运算 三元运算又叫三目运算.(是为了赋值的) v = 前面 if 条件 else 后面 #条件为真,v取if前面的值:条件为假,v取if后面的值 ...
- 老男孩python 自学day09 函数开始
什么是函数? 函数用关键字def定义 语法: def 函数名(形参): 函数体 return 调用 函数名(实参) 命名规则:和变量一样 1. 由数字, 字母, 下划线组成 2. 不能数字开头. 更不 ...
- day09——初识函数
day09 函数的定义 # len() s = 'alexdsb' count = 0 for i in s: count += 1 print(count) s = [1,2,23,3,4,5,6] ...
- 22期老男孩Ptython全栈架构师视频教程
老男孩Ptython全栈架构师视频教程 Python最新整理完整版22期视频教程 超60G课程容量<ignore_js_op> <ignore_js_op> <ignor ...
- day09 python函数 返回值 参数
day09 python 一.函数 1.函数 函数是对功能的封装 语法: 定义函数: def 函数名(形参): ...
- day09 python之函数进阶
楔子 假如有一个函数,实现返回两个数中的较大值: def my_max(x,y): m = x if x>y else y return mbigger = my_max(10,20)print ...
- python学习 day09打卡 初识函数
本节内容: 1.什么是函数 2.函数定义,函数名,函数体及函数的调用 3.函数的返回值 4.函数的参数 一.什么是函数 函数:对代码块和功能的封装和定义 定义一个事情或者功能.等到需要的时候直接去用, ...
- day09作业—函数进阶
# 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def func1(*args): sum = 0 for i in args: sum += i print(sum) func1(1 ...
随机推荐
- jenkins使用1----初始化设置
####一.基本设置 1.首先找到系统管理 2.再找到全局配置一把黄色的锁头 3.新增JDK.Maven等 别名随便 下面的值添加jdk在jenkins这台机器上的位置,如果没找到可以点击自动安装,并 ...
- 重建UNDO表空间遭遇ORA-01548
今天开发那边的一套数据库的undo表空间不知道被谁设置成了自动扩展,然后所谓的屋漏偏逢连夜雨的是, 开发人员今天跑了一个很大的事物,然后直接后果就是undo表空间不断被扩展,直到把文件系统写爆了.没办 ...
- springboot打包去除资源文件,启动时指定配置文件位置,使用log4j2替换默认logback
springboot打包时,去掉资源文件 <build> <resources> <resource> <directory>src/main/reso ...
- Django:安装和启动
最近在学习利用python语言进行web站点开发,使用的框架是Django.这篇博客主要介绍Django的安装和简单使用. 一.Django介绍 Django是一个开源的Web应用框架,由Python ...
- OPPO Developers Conference(2018.12.26)
时间:2018.12.26地点:北京国家会议中心
- 记上海技术交流会之行备忘录(superset与odoo整合)
像每个早上一样,早起跑步回来冲个热水澡,简单的吃下早饭,看书到8:50的样子,准备赶10:02分的火车.在我看到周总的微信时,我知道这将是一个新的起点,在自己过往的2年时间,将更多的精力和时间用在了英 ...
- 【转】强化学习(一)Deep Q-Network
原文地址:https://www.hhyz.me/2018/08/05/2018-08-05-RL/ 1. 前言 虽然将深度学习和增强学习结合的想法在几年前就有人尝试,但真正成功的开端就是DeepMi ...
- Java系统高并发之Redis后端缓存优化
一:前端优化 暴露接口,按钮防重复(点击一次按钮后就变成禁用,禁止重复提交) 采用CDN存储静态化的页面和一些静态资源(css,js等) 二:Redis后端缓存优化 Redis 是完全开源免费的,遵守 ...
- eclipse maven 常见问题解决方案
一.eclipse集成与设置 传送门:http://www.cnblogs.com/tweet/p/7602044.html 二.创建maven webapp工程,报错 报错信息:Could not ...
- Python全栈开发之路 【第四篇】:Python基础之函数
本节内容 函数def: 1.位置参数,默认参数 2.位置参数,关键参数 3.如果参数中出现 *users,传递的参数就可以不再是固定的个数, 传过来的所有元素进行打包成元组 *args,**kwarg ...