函数的初识
一、什么是函数
- 函数: 对代码块和功能的封装和定义。一个函数封装一个功能
- 函数的优点:减少代码的重复性,增强了代码的可读性。
二、函数定义, 函数名, 函数体以及函数的调用
函数的定义
我们使用def关键字来定义函数, 函数的定义语法:
def 函数名():
函数体
函数的调用
函数名()//函数的执行者,调用者
函数的调用,调用多少次执行多少次
函数的返回值
一个函数就是封装一个功能,这个功能一般都会有一个最终结果的,比如你写一个登录函数,最终登录成功与否是不是需要返回你一个结果?还有咱们是不是都用过len这个函数,他是获取一个对象的元素的总个数,最终肯定会返回一个元素个数这样的结果:
s1 = 'abfdas' print(len(s1)) # 6
函数的返回值用return表示:
结束函数。
l1 = [1, 2, 3] def new_len(): print(111) print(222) if 1 == 1: return print(333) print(444) new_len()
函数中没有return或者只写一个return,函数的执行者得到的是None。
l1 = [1, 2, 3] def new_len(): count = 0 for i in l1: count += 1 return print(new_len())
函数中return后面是单个值,函数的执行者得到的是这个值(不改变值的类型)。
def func(): print(111) # return 100 # return [1, 2, 3] return {'name': '太白'} ret = func() print(ret, type(ret))
函数中return后面是多个值,函数的执行者得到的是一个元组。
def func(): print(111) return 1, '23期', [22, 33] ret = func() print(ret, type(ret)) # (1, '23期', [22, 33]) def func(): print(111) # return 1, '23期', [22, 33] a,b,c = func() print(a,b,c) def func(): print(111) return 1+1+2 return 2 > 1 ret = func() print(ret)
函数的传参
我们上面研究了,函数的结构,函数的执行,以及函数的返回值。对函数有一个初步的了解,那么接下来就是一个非常重要的知识点,函数的参数。函数是以功能为导向的,上面我们写的函数里面的代码都是写死的,也就是说,这个函数里面的更改起来很麻烦,试想一下,我们使用探探,陌陌等软件,可不可以进行筛选,比如选择性别,年龄等,导出结果? 再拿我们之前学过的len 这个len是不是可以获取字符串的总个数?是不是可以获取列表的总个数?你更改了len函数内部的代码了?没有吧?你看下面的例子:
s1 = 'sfdas' l1 = [1, 3, 7] print(len(s1)) # 5 print(len(l1)) # 3
# # 函数的传参:函数的拓展性 # # # def new_len(a): # 定义函数时:参数:形参。 # count = 0 # for i in a: # count += 1 # return count # l1 = [1, 2, 3] # s1 = 'fdsjaklsfjgfds' # # print(new_len(l1)) # 函数的调用者:参数 实参。 # print(new_len(s1)) # 函数的调用者:参数 实参。 # print(len(s1))
实参角度:
- 位置参数。
- 关键字参数。
- 混合参数。
形参角度:
- 位置参数。
- 默认参数。
- 动态参数。
- 仅限关键字参数。(了解)
实参角度:
位置参数。
# 1. 位置参数。: 从左至右,按照顺序,一一对应 def meet(sex,age,job,): print('左划一下') print('右划一下') print(f'寻找性别{sex},年龄{age}岁,{job}') print('聊天') print('约吗') print('约....') meet('女','18~25','讲师') # 写一个函数,接收两个数字的参数,将较大的数字返回。 # def comp(a,b): # if a > b: # return a # else: # return b # ret = comp(1,2000) # print(ret) # 三元运算符:简单的if else。 # a1 = 1 # b2 = 2 # ret = a1 if a1 > b2 else b2 # # print(ret) # # def comp(a,b): # # ret = a if a > b else b # # return ret # return a if a > b else b # ret = comp(1,2000) # # print(ret)
关键字参数。一一对应
def meet(sex,age,job,hight,weight,): print('左划一下') print('右划一下') print(f'寻找性别{sex},年龄{age}岁,身高{hight},体重{weight},工作{job}') print('聊天') print('约吗') print('约....') # meet(sex='女',job='学生',weight=120,hight=170,age='18~25')
混合参数。关键字参数一定在位置参数后面,一一对应。
# def meet(sex,age,job,hight,weight,): # print('左划一下') # print('右划一下') # print(f'寻找性别{sex},年龄{age}岁,身高{hight},体重{weight},工作{job}') # print('聊天') # print('约吗') # print('约....') # # meet('男',27,'ITC语言',weight=120,hight=175,)
形参角度:
位置参数:与实参角度位置参数一样。
# def meet(sex,age,job): # print('左划一下') # print('右划一下') # print(f'寻找性别{sex},年龄{age}岁,{job}') # print('聊天') # print('约吗') # print('约....') # meet('女','18~25','讲师')
默认参数: 一定在位置参数后面,不传参数即沿用默认的参数。
# open('文件的改',encoding='utf-8') def meet(age,job,sex='女'): print('左划一下') print('右划一下') print(f'寻找性别{sex},年龄{age}岁,{job}') print('聊天') print('约吗') print('约....') # meet('18~25','幼师') # 更改默认参数 # meet('18~25','幼师',sex='laddy_boy') meet('18~25','幼师','laddy_boy')
原文地址:https://www.cnblogs.com/cuixiaoying/p/11043527.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ubuntu 18.04 安装使用 Supervisor 进程守护并设置开机自动启动
- AWS CLI version 2 在 Windows 下的安装
- Vue事件绑定原理
- 组合
- 用navicat进行身份验证连接出现cannot connect to Mongodb authentication failed
- three.js中的矩阵计算
- ASP.NET Core 3.x Razor视图运行时刷新实时编译
- 线段树详解分析
- Centos 网卡命名规范及信息查看(物理网卡,虚拟网卡)
- 个人账号密码管理体系(账号篇)
- 当年偶然发现的 Java Bug(JDK 9及之前仍未修复)
- 干货 | 45张图庖丁解牛18种Queue,你知道几种?
- Linux/Unix 效率工具:快速路径切换 z 命令
- Salesforce LWC学习(二十四) Array.sort 浅谈
- 《闲扯Redis十一》Redis 有序集合对象底层实现