函数

函数的定义

函数:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数
-- 现实中:很多问题要通过一些工具进行处理 => 可以将工具提前生产出来并命名
=> 通过名字就可以找到工具 => 使用工具来解决问题

函数的优点

1. 避免代码的冗余
2. 让程序代码结构更加清晰
3. 让代码具有复用性,便于维护

函数的四部分

1. 函数名:使用该函数的依据
2. 函数体:完成功能的代码块
3. 返回值:功能完成的反馈结果
4. 参数:完成功能需要的条件信息

函数的语法

def:定义函数的关键字
函数名:该工具的名字,后期就是通过工具的名字使用工具
参数列表:使用工具需要提供一些参数
函数体:解决问题的过程逻辑
返回值:告诉外界功能执行的结果

def get_water(water, money):
print('收入你的%d元钱')
print('给你%s水种')
return '矿泉水'

函数的使用

使用函数:
 1.根据需求定义函数
 2.通过函数名找到函数所在的位置(内存地址)
 3.函数名() 执行函数地址中存放的所有代码块
 -- 函数在定义时需要外界的参数,就要在调用时传入对应的参数
 4.函数执行完一定有返回结果,通过return关键字将结果返回给外界
 -- 外界需要知道执行结果,用变量接收,反之只执行函数(不需要接收)即可

# 注:函数必须先定义,后使用

# 函数的四部分都可以根据需求的变化而变化
def get_water(water, money):
print('收入你的%d元钱' % money)
print('给你%s水种' % water)
return water
# 需要使用函数,就调用一次
res = get_water('矿泉水', )
print(res) print('玩耍...')
print('又口渴了...') # 又来需求,在调用一次,代码可以复用,函数只有一个,代码结构清晰且不冗余
res = get_water('王大哦', )
print(res)

函数的分类

1.根据函数体分类

空函数: pass来填充函数体的函数
  -- 优先明确函数名,暂不明确函数体(编程中就存在一些没有函数体的函数)
def login(): pass # 在开发初期,可以讲所有功能提前列出来,用pass占位着,后期再去填充功能体

非空函数:有函数体的函数

def fn2():
print('函数体')

2.根据函数参数分类

无参函数:

def add():
print('功能体不需要外界的参数')
n1 = input('n1: ')
n2 = input('n2: ')
print(n1 + n2)

有参函数:

def add_two(n1, n2):
print('功能体需要外界的参数')
print(n1 + n2)

3.根据函数返回值分类:所有的函数都有返回值

不明确返回值:

def low_two(n1, n2):
# 外部不需要知道内部的执行结果
print(n1 - n2)

明确返回值:

def jump_two(n1, n2):
# 外部需要知道内部的执行结果
return n1 * n2
res = jump_two(10, 20)
print(res)

函数的返回值

在函数体中,通过return关键词返回函数的内部数据给外部

重点:函数名()  
1)拿到函数地址 => 2)加()执行函数体 => 3)得到函数的执行结果

重点: 返回值的功能
 1.结束函数;2.将函数的内部数据返回给外部

二、应用场景

1.不明确return关键词的函数:系统在函数最末尾自动添加了return,返回的是None

def fn1():
print('普通的函数执行') res = fn1() # 一般不需要对这样的函数进行接收执行结果
print(res)

2.明确空return关键词的函数:为了结束函数而return

def print_msg():
while True:
msg = input("msg: ")
if msg == 'q':
# break
return # 在特定的位置需要直接结束函数,但不需要告诉外界某个结果,用空return处理
print(msg)
print(msg) # 在break下可以被执行,在return下不能被执行
res = print_msg()
print(res)

3.有明确的返回值需求的函数:
-- python中的函数本质上只能返回一个值,
-- 值跟在return关键词后
-- 可以通过语法上返回多个值,值之间用逗号隔开,但是本质上返回装有多个值的元组

# 一个值
def get_num():
num = input('num: ')
return num
print(get_num())
# 多个值
def get_two_num():
n1 = input('n1: ')
n2 = input('n2: ')
return n1, n2
# return (n1, n2)
# print(get_two_num())
num1, num2 = get_two_num() # python的return支持多值返回的语法原因是python中有解压赋值
print(num1, num2)

注意:
 当用一个值接收函数的返回值,一定没有问题
 -- 函数返回一个接收一个;函数返回多个,接收装有多个值得元组
 当用多个值接收函数的返回值,采用的是解压赋值的机制,返回值的个数一定要与接收值得个数相同

day-10初级函数的更多相关文章

  1. day_10初级函数

    今天讲了函数初级 函数:完成特定功能的代码块,作为一个整体对其进行特定的命名,该名字就是代表函数 --现实中很多问题要通过一些工具进行处理 ,,可以将工具提前准备好并命名 通过名字就可以找到这个工具 ...

  2. Linux pwn入门教程(10)——针对函数重定位流程的几种攻击

    作者:Tangerine@SAINTSEC 本系列的最后一篇 感谢各位看客的支持 感谢原作者的付出一直以来都有读者向笔者咨询教程系列问题,奈何该系列并非笔者所写[笔者仅为代发]且笔者功底薄弱,故无法解 ...

  3. 巨蟒python全栈开发-第10天 函数进阶

    一.今日主要内容总览(重点) 1.动态传参(重点) *,** *: 形参:聚合 位置参数*=>元组 关键字**=>字典 实参:打散 列表,字符串,元组=>* 字典=>** 形参 ...

  4. 2021.08.10 Euler函数总结

    2021.08.10 Euler函数总结 知识: 记 φ(n) 表示在 [1,n] 中与 n互质的数的个数. 1.p为质数,则 \[φ(p^l)=p^l-p=p^{l-1}(p-1) \] 注:每p个 ...

  5. int (*(*fp)(void *))[10]; 指向函数的指针类型

    <pre lang="c" escaped="true">int (*(*fp)(void *))[10]; //这个类型用typedef分解出来 ...

  6. Python核心编程读笔 10:函数和函数式编程

    第11章 函数和函数式编程 一 调用函数  1 关键字参数 def foo(x): foo_suite # presumably does some processing with 'x' 标准调用 ...

  7. 关于oracle数据库(10)函数

    分析函数,用于统计排名 语法:函数名() over(order by 排序字段 asc | desc) row_number() 无论值是否相等,生成连续的行号 -- 1,2,3,4, select ...

  8. 【转】JDBC学习笔记(10)——调用函数&存储过程

    转自:http://www.cnblogs.com/ysw-go/ 如何使用JDBC调用存储在数据库中的函数或存储过程: * 1.通过COnnection对象的prepareCall()方法创建一个C ...

  9. day 10 - 2 函数练习

    1.写函数 接收 n 个数字  求这些参数数字的和 def sum_func(*args): total = 0 for i in args: total += i return total prin ...

随机推荐

  1. grid-layout

    <!-- 创建三个网格布局--> .wrapper { <!--创建一个网格布局 --> display: grid; <!--创建3列 且每列都等距 --> gr ...

  2. s5p6818开发板uboot网络开通

    手上的开发板网络默认是不通的,但是通过阅读uboot源码,发现uboot源码中,是有对这个网络的初始化的实现的函数的,只不过是没有调用而已,所以,要手动调用这个函数,把板子的网络调通: 首先是遇到了这 ...

  3. uboot中往s5p6818的emmc刷写内容

    建立分区: fdisk :: : fdisk Partition Map -- Partition Type: DOS Part Start Sector Num Sectors UUID Type ...

  4. 最近在研究syslog日志,就说一下syslog格式吧

    syslog格式:<PRI>HEADER MESSAGE syslog的消息长度:不超过1024.syslog格式举例:<15>Jul 10 12:00:00 192.168. ...

  5. web端分享网页到各个网站JS代码(微信为生成二维码)

    /*分享到新浪微博,QQ空间,人人网,生成二维码*/ var myTitle=$("title").text(); var myHref = window.location.hre ...

  6. nginx 配置 同一域名端口下,根据URL 导向不同的项目目录

    我们现在拥有2个项目.但是只有一个域名,通过nginx配置来实现以下url导向不同的项目. 后台管理台:{域名}/admin 用户客户端:{域名}/client server { listen 888 ...

  7. 3--Postman--变量(environment&global)

    (1) Environment clear an environment variable: pm.environment.unset("variable_key")--recom ...

  8. linux 中 修改权限的命令 chmod

    今天被这个命令给黄了, 连这个都记不住,是该好好的复习复习了,问了一个问题,就是说这个tomcat 如何去修改关于这个权限的问题:一下子把我弄蒙了,不说了,心累: 修改linux文件权限命令:chmo ...

  9. WEB学习笔记2-结构组织和文件命名

    常用的前端文件的组织结构: .js(放置javascript代码) .lib(放置框架javascript文件) .custom.js .css(放置CSS样式代码) .lib(放置框架CSS文件) ...

  10. 解决npm ERR! Please try running this command again as root/Administrator. 问题

    win10下,使用npm 安装插件时报npm ERR! Please try running this command again as root/Administrator的错误, 解决方案:需要删 ...