百万年薪python之路 -- 函数初始
1.函数
1.1 认识函数
定义一个事情或者是功能,等到需要的时候直接去用就好了.那么这里定义东西就是一个函数
函数:对代码块和功能的封装和定义
函数的好处:
减少代码的重复性
代码可读性高
将功能进行封装(造工具)
1.2 定义函数
结构:
def 函数名():
函数体
def 关键字
func 函数名
() 传递参数
: 语句结束
函数体:就是函数被执行之后要执行的代码
1.3 调用函数
使用函数名加小括号就可以调用了 写法:函数名() 这个时候函数的函数体会被执行
def walk():
print("出宿舍门")
print("下楼梯")
print("出大楼门")
print("右转直行200米")
print("再右转直行100米")
walk() # 这是walk函数的调用
结果:
出宿舍门
下楼梯
出大楼门
右转直行200米
再右转直行100米
1.4 函数的执行流程
1.5 函数的返回值
执行完函数之后,我们可以使用return来返回结果
函数中遇到return,此函数就立马结束了.不在继续执行
当函数的返回值是多个的时候,返回的就是一个元组
总结一下:
1.return 返回值
2.遇到return,此函数结束,函数后面的东西将不会在执行
3.return的内容返回给函数的调用
4.return 返回多个内容的时候还是元组
关于返回值:
如果return什么都不写或者干脆就没写,return返回的结果就是None
如果return后面写了一个值,可以返回任意类型,则调用者可以接受一个结果
如果return后面写了多个结果,则调用者可以接受一个tuple,调用者可以直接使用解构获取多个变量
lst = [1,2,3,4,5]
def func():
for i in lst:
print(i)
lst.append(input(">>>"))
return lst
print(func())
1.6 函数的参数
参数,也就是函数括号里的内容 函数在调用的时候指定一个具体的变量的值 就是参数.写法如下:
def 函数名(参数):
函数体
如果我们再定函数的时候写了形参,在调用函数的时候没有传递值,调用的时候右边括号会发黄,所以我们必须要传递参数,参数要一一对应,不能多不能少.
1.6.1参数
1.形参(形式上的参数)(行数的定义中括号里的是形参)
写在函数声明的位置的变量叫形参,形式上的一个完整.表示这个函数需要xxx
2.实参(实际存在的参数)(行数的调用括号里的是实参)
在函数调用的时候给函数传递的值加实参,实际执行的时候给函数传递的信息.表示给函数xxx
3.传参(将实参传递给形参的过程叫做传参)
从调用函数的时候将值传递到定义函数的过程叫做传参
#函数定义
def mylen(s1):
"""计算s1的长度"""
length = 0
for i in s1:
length = length+1
return length
#函数调用
str_len = mylen("hello world")
print('str_len : %s'%str_len)
带参数的函数
参数可以传递多个,多个参数之间用逗号分割。
def mymax(x,y):
the_max = x if x > y else y
return the_max
ma = mymax(10,20)
print(ma)
传递多个参数
4.位置参数(必须一一对应)
站在实参角度
4.1 按照位置传参
按照位置传参
def mymax(x,y):
#此时x=10,y=20
the_max = x if x > y else y
return the_max
mx = mymax(10,20)
print(mx)
4.2 按照关键字传参
按照关键字传参
def mymax(x,y):
#此时x = 20,y = 10
print(x,y)
the_max = x if x > y else y
return the_max
mx = mymax(y = 10,x = 20)
print(mx)
4.3 位置,关键字形式混合用
混合传参
def mymax(x,y):
#此时x = 10,y = 20
print(x,y)
the_max = x if x > y else y
return the_max
mx = mymax(10,y = 20)
print(mx)
正确用法
问题一:位置参数必须在关键字参数的前面
问题二:对于一个形参只能赋值一次
综上: 在实参的角度来看. 分为三种:
1. 位置参数
2. 关键字参数
3. 混合参数, 位置参数必须在关键字参数前面
位置参数:
位置参数,按照位置来赋值,到目前为止,我们编写的函数都是这种
优先级:位置 > 关键字
站在形参的角度
位置参数必须传值
def mymax(x,y):
#此时x = 10,y = 20
print(x,y)
the_max = x if x > y else y
return the_max
#调用mymax不传递参数
mx = mymax()
print(mx)
#结果
TypeError: mymax() missing 2 required positional arguments: 'x' and 'y'
默认参数
在函数声明的时候, 就可以给出函数参数的默认值. 在调用的时候可以 给出具体的值, 也可以不给值, 使用默认值.
eg:一个班大部分学生都是男生. 这个时 候就可以给出⼀一个sex='男'的默认值.
def stu_info(name,sex = "male"):
"""打印学生信息函数,由于班中大部分学生都是男生,
所以设置默认参数sex的默认值为'male'
"""
print(name,sex)
stu_info('alex')
stu_info('Eva_J','female')
默认参数
注意:必须先声明在位置参数,才能声明关键字参数
参数陷阱:
def defult_param(a,l = []):
l.append(a)
print(l)
defult_param('alex')
defult_param('egon')
结果:
['alex']
['alex', 'egon']
综上:在形参的角度来看
- 位置参数
- 默认值参数(大多数传进来的参数都是一样的, 一般用默认参数
优先级:位置 > 默认
百万年薪python之路 -- 函数初始的更多相关文章
- 百万年薪python之路 -- 函数初始练习
1.整理函数相关知识点 2.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者. def func(lst): lst = lst[1::2] return l ...
- 百万年薪python之路 -- 数据库初始
一. 数据库初始 1. 为什么要有数据库? 先来一个场景: 假设现在你已经是某大型互联网公司的高级程序员,让你写一个火车票购票系统,来hold住十一期间全国的购票需求,你怎么写? 由于在同一时 ...
- 百万年薪python之路 -- 面向对象初始
面向对象初始 1.1 面向过程编程vs函数式编程 函数编程较之面向过程编程最明显的两个特点: 1,减少代码的重用性. 2,增强代码的可读性. 1.2 函数式编程vs面向对象编程 面向对象编程:是一类相 ...
- 百万年薪python之路 -- 函数的动态参数
1.函数的动态参数 1.1 动态接收位置参数 在参数位置用*表示接受任意参数 def eat(*args): print('我想吃',args) eat('蒸羊羔','蒸熊掌','蒸鹿尾儿','烧花鸭 ...
- 百万年薪python之路 -- 函数名的第一类对象及使用
函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量 1.1.函数名的内存地址 def func(): print("呵呵") print(func) 结果: ...
- 百万年薪python之路 -- 函数的动态参数练习
1.继续整理函数相关知识点. 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def func(*args,**kwargs): num_sum = 0 num_dic = [] num ...
- 百万年薪python之路 -- 生成器
1.生成器 #本质就是迭代器 1.1 生成器的构建方式 在python中有三种方式来创建生成器: 1.通过生成器函数 2.通过生成器推导式 3.python内置函数或者模块提供 1.2 生 ...
- 百万年薪python之路 -- 内置函数二 -- 最常用的内置函数
1.内置函数 1.1 匿名函数 匿名函数,顾名思义就是没有名字的函数(其实是有名字的,就叫lambda),那么什么函数没有名字呢?这个就是我们以后面试或者工作中经常用匿名函数 lambda,也叫一句话 ...
- 百万年薪python之路 -- 内置函数练习
1.整理今天笔记,课上代码最少敲3遍. 2.用列表推导式做下列小题 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 lst = [["a","b"],[ ...
随机推荐
- [Leetcode] 第357题 计算各个位数不同的数字个数
一.题目描述 给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n . 示例: 输入: 2 输出: 91 解释: 答案应为除去 11,22,33,44,55, ...
- BOM之本地数据存储
JavaScript中本地存储数据常用的,且兼容性较好的有两种方式,cookie和Storage.另外还可以使用location.hash临时存储少量关键信息. 一 location.hash ...
- WebStorm在Font设置FontSize无效解决方法
我的WebStorm设置了主题.所以直接在File-Settings-Editor-Font设置了无效.它会提醒你要在主题里面改.主题在哪里呢 找到File-Settings-Editor-Color ...
- 将maven项目到入到idea中
一,前言 在文章将maven项目导入到eclipse中中我将新建的项目到入到了eclipse中了,因为最近也在尝试idea,那么就顺便也到入idea中. maven项目的话,我就使用在文章使用命令行创 ...
- 数据分析--Matplotlib的基本使用
一.Matplotlib概述 1.Matplotlib是一个强大的Python绘图和数据可视化的工具包. 2.python中操作方式: 安装方法:pip install matplotlib 引用方法 ...
- redis分布式锁-基本概念与实现方式对比
1.redis中使用WATCH实现锁机制,是最次之的方式.WATCH只会在数据被其他客户端抢先修改了的情况下,“通知”执行了这个命令的客户端,而不会阻止其他客户端对数据进行修改.此类锁成为“乐观锁” ...
- Spring IOC(2)----如何注册bean定义
前面说到IOC容器在刷新之前的一些初始化工作,现在来看看在refresh()方法中,是怎样来加载注册我们自己的bean定义的. refresh()方法中有很多功能,从注释中就可以看出来 我们本次重点关 ...
- 『TensorFlow2.0正式版』TF2.0+Keras速成教程·零:开篇简介与环境准备
此篇教程参考自TensorFlow 2.0 + Keras Crash Course,在原文的基础上进行了适当的总结与改编,以适应于国内开发者的理解与使用,水平有限,如果写的不对的地方欢迎大家评论指出 ...
- CentOS系统查看软件安装路径
Linux系统一般都是命令行界面,对于安装的软件也是通过命令安装的.对于软件包更新和卸载等有时候需要查看检查是否有改软件,软件安装存储的路径对于修改配置文件等是必要的.那么怎么查看软件安装路径呢?小编 ...
- Salesforce学习之路-developer篇(三)利用Visualforce Page实现页面的动态刷新案例学习
Visualforce是一个Web开发框架,允许开发人员构建可以在Lightning平台上本地托管的自定义用户界面.其框架包含:前端的界面设计,使用的类似于HTML的标记语言:以及后端的控制器,使用类 ...