python基础之函数(基础七)
时间:2019-06-17
本文章向大家介绍python基础之函数(基础七),主要包括python基础之函数(基础七)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
第九章python基础之函数(基础七)
- 初始函数
- 函数的结构
- 函数的调用
- 函数的返回值
- 函数的传参
9.1 初始函数
函数:函数是以功能为导向,一个函数封装一个功能,登入,注册,文件的改的操作。
函数减少代码的重复性,增强了代码的可读性。
- 获取任意一个字符串的元素的个数
s1 = 'abcdefghijk'
count = 0
for i in s1:
count += 1
print(count)
- 获取列表的元素的个数
l1 = [1, 2, 3]
count = 0
for i in l1:
count += 1
print(count)
面向过程编程
- 代码重复。
- 代码可可读性不高
初识函数
l1 = [1, 2, 3]
def new_len():
count = 0
for i in l1:
count += 1
print(count)
new_len()
9.2函数的结构
def 关键字:定义一个函数。紧跟着一个空格
new_len函数名:与变量命名规范一致,一定要具有可描述性。
(): 结构需要,传参使用.
: 分割符。
tab键:四个空格,缩进,函数体
l1 = [1, 2, 3]
def new_len():
count = 0
for i in l1:
count += 1
print(count)
new_len()
9.3 函数的调用
使用函数名加小括号就可以调用,写法:函数名(),函数体就会被执行
l1 = [1, 2, 3]
def new_len():
count = 0
for i in l1:
count += 1
print(count) ##代码后缀没有申明函数名,函数体不被执行
函数执行的方式写几次调用几次
# 函数的执行写多少次,执行多少次。
# new_len() # 函数名() 函数的执行者。调用者。
# new_len() # 函数名() 函数的执行者。
# new_len() # 函数名() 函数的执行者。
for i in range(10):
print(111) #执行10次111
for i in range(3):
new_len() #执行
9.4 函数的返回值
一个函数就是封装一个功能,这个功能一般都会有一个最终结果的,比如你写一个登录函数,最终登录成功与否是不是需要返回你一个结果?通过len这个函数,它获取一个元素的总个数,最终肯定会返回一个元素个数这样的结果:
s1 = 'abcdefghijklm'
print(len(s1)) #13个元素
函数的返回值用return表示:
9.4.1 结束函数
l1 = [1, 2, 3]
def new_len():
print(111)
print(222)
if 1 == 1:
return ##return执行之前的函数体,之后的不执行
print(333)
print(444)
new_len() ##结果111,222
9.4.2函数中没有return或者只写一个return,函数的执行者得到的是None
l1 = [1, 2, 3]
def new_len():
count = 0
for i in l1:
count += 1
return #后面没有定义返回的值为None
print(new_len())
9.4.3函数中return后面是单个值,函数的执行者得到的是这个值(不改变值的类型)
def func():
print(111)
# return 100
# return [1, 2, 3]
return {'name': 'lili'} #return值字典类型输出也是字典类型
ret = func()
print(ret, type(ret))
9.4.4函数中后面是多个值,函数的执行者得到的是一个元组
def func():
print(111)
return 1, 'abl', [22, 33]
ret = func()
print(ret, type(ret)) # 输出结果111,return返回的(1, 'abl', [22, 33])是元组
def func():
print(111)
# return 1, '23期', [22, 33]
a,b,c = func()
print(a,b,c) #报错'NoneType' object is not iterable
def func():
print(111)
# return 1+1+2 #为2返回的是2
return 2 > 1 #2>1为True,
ret = func()
print(ret) #输出结果为111,return的返回的值是True
9.5函数的传参
函数的参数,函数是以功能为导向的,上面我们写的函数里面代码都是写死的,也就是这个函数里面的更改起来很麻烦。 通过传参能灵活的调用可变的代码内容,再拿我们之前学过的len 这个len是不是可以获取字符串的总个数?是不是可以获取列表的总个数?你更改了len函数内部的代码了?没有吧?你看下面的例子:
s1 = 'sfdas'
l1 = [1, 3, 7]
print(len(s1)) # 5
print(len(l1)) # 3
9.5 函数的传参:函数的拓展性
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)) #没有用函数调用
实参角度:
- 位置参数
- 关键字参数
- 混合参数
形参角度:
- 位置参数
- 默认参数
- 动态参数
- 仅限关键字参数。(了解)
9.5.1实参角度:
- 位置参数
# 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,)
9.5.2形参角度:
位置参数:与实参角度位置参数一样。
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='women') meet('18~25','','women')
原文地址:https://www.cnblogs.com/yueling314/p/11041947.html
- 面向资源与面向活动的 Web 服务
- OpenXML 成为 ECMA标准 376
- 常用翻译技巧
- ScintillaNET 需要帮助
- Windows Live Writer工具
- WPF/XML 资源及相关开源项目
- Android应用底部导航栏(选项卡)实例
- 有关 ASMX 2.0、WSE 3.0 和 WCF 的内容
- 微信小程序游戏其实一般,我也就站在寒风里玩了一个小时
- beagle MONO 应用的desktop search
- Python3与OpenCV3.3 图像处理(一)-环境搭建与简单DEMO
- winform中利用正则表达式得到有效的电话/手机号
- 浅述RDF,畅想一下FOAF应用
- 数据源控件参数类Parameter
- 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 数组属性和方法
- 分享个 CTF 小工具 bruteHASH
- centos配置mutt和msmtp实现邮件发送
- CentOS8 安装 jdk8 / java8的教程(推荐)
- Ubuntu18.04 一键升级Python所有第三方包 及安装python包的方法
- 详解centos7上elastic search安装及填坑记
- Linux利用Sysctl命令调整内核参数
- 在ubuntu16.04上创建matlab的快捷方式(实现方法)
- CentOS 7.6 Telnet服务搭建过程(Openssh升级之战 第一任务备用运输线搭建)
- Ubuntu18.04下安装MySQL(图文教程)
- 基于 ffmpeg+Webassembly 实现视频帧提取
- Ubuntu14.04 opencv2.4.8和opencv3.3.1多版本共存的实现方法
- 解决Unixbench安装报错信息的问题
- 关于安装LNMP集成包后上传图片报500错误的解决方法
- linux下SVN配置实现项目目录自动更新以及源码安装的操作方法
- linux安装redis和mysql的实例讲解