一、函数的定义:跟变量名的定义大同小异

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、函数的更多相关文章

  1. day09 函数学习

    内容详细 1.函数 1.1.面向过程: 可读性差/可重用差 1.2.面向对象:

  2. python day09 函数(第一篇)

    2019.4.9 S21 day09笔记总结 一.三元运算 三元运算又叫三目运算.(是为了赋值的) v = 前面 if 条件 else 后面 #条件为真,v取if前面的值:条件为假,v取if后面的值 ...

  3. 老男孩python 自学day09 函数开始

    什么是函数? 函数用关键字def定义 语法: def 函数名(形参): 函数体 return 调用 函数名(实参) 命名规则:和变量一样 1. 由数字, 字母, 下划线组成 2. 不能数字开头. 更不 ...

  4. day09——初识函数

    day09 函数的定义 # len() s = 'alexdsb' count = 0 for i in s: count += 1 print(count) s = [1,2,23,3,4,5,6] ...

  5. 22期老男孩Ptython全栈架构师视频教程

    老男孩Ptython全栈架构师视频教程 Python最新整理完整版22期视频教程 超60G课程容量<ignore_js_op> <ignore_js_op> <ignor ...

  6. day09 python函数 返回值 参数

    day09 python   一.函数     1.函数         函数是对功能的封装         语法:         定义函数:             def 函数名(形参):    ...

  7. day09 python之函数进阶

    楔子 假如有一个函数,实现返回两个数中的较大值: def my_max(x,y): m = x if x>y else y return mbigger = my_max(10,20)print ...

  8. python学习 day09打卡 初识函数

    本节内容: 1.什么是函数 2.函数定义,函数名,函数体及函数的调用 3.函数的返回值 4.函数的参数 一.什么是函数 函数:对代码块和功能的封装和定义 定义一个事情或者功能.等到需要的时候直接去用, ...

  9. day09作业—函数进阶

    # 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def func1(*args): sum = 0 for i in args: sum += i print(sum) func1(1 ...

随机推荐

  1. jenkins使用1----初始化设置

    ####一.基本设置 1.首先找到系统管理 2.再找到全局配置一把黄色的锁头 3.新增JDK.Maven等 别名随便 下面的值添加jdk在jenkins这台机器上的位置,如果没找到可以点击自动安装,并 ...

  2. 重建UNDO表空间遭遇ORA-01548

    今天开发那边的一套数据库的undo表空间不知道被谁设置成了自动扩展,然后所谓的屋漏偏逢连夜雨的是, 开发人员今天跑了一个很大的事物,然后直接后果就是undo表空间不断被扩展,直到把文件系统写爆了.没办 ...

  3. springboot打包去除资源文件,启动时指定配置文件位置,使用log4j2替换默认logback

    springboot打包时,去掉资源文件 <build> <resources> <resource> <directory>src/main/reso ...

  4. Django:安装和启动

    最近在学习利用python语言进行web站点开发,使用的框架是Django.这篇博客主要介绍Django的安装和简单使用. 一.Django介绍 Django是一个开源的Web应用框架,由Python ...

  5. OPPO Developers Conference(2018.12.26)

    时间:2018.12.26地点:北京国家会议中心

  6. 记上海技术交流会之行备忘录(superset与odoo整合)

    像每个早上一样,早起跑步回来冲个热水澡,简单的吃下早饭,看书到8:50的样子,准备赶10:02分的火车.在我看到周总的微信时,我知道这将是一个新的起点,在自己过往的2年时间,将更多的精力和时间用在了英 ...

  7. 【转】强化学习(一)Deep Q-Network

    原文地址:https://www.hhyz.me/2018/08/05/2018-08-05-RL/ 1. 前言 虽然将深度学习和增强学习结合的想法在几年前就有人尝试,但真正成功的开端就是DeepMi ...

  8. Java系统高并发之Redis后端缓存优化

    一:前端优化 暴露接口,按钮防重复(点击一次按钮后就变成禁用,禁止重复提交) 采用CDN存储静态化的页面和一些静态资源(css,js等) 二:Redis后端缓存优化 Redis 是完全开源免费的,遵守 ...

  9. eclipse maven 常见问题解决方案

    一.eclipse集成与设置 传送门:http://www.cnblogs.com/tweet/p/7602044.html 二.创建maven webapp工程,报错 报错信息:Could not ...

  10. Python全栈开发之路 【第四篇】:Python基础之函数

    本节内容 函数def: 1.位置参数,默认参数 2.位置参数,关键参数 3.如果参数中出现 *users,传递的参数就可以不再是固定的个数, 传过来的所有元素进行打包成元组 *args,**kwarg ...