python基础(11):函数(一)
1. 什么是函数
1.我们到⽬前为⽌,已经可以完成⼀些软件的基础功能了。那么我们来完成这样⼀个功能: 约会:
print("拿出⼿机")
print("打开陌陌")
print("找个漂亮的妹⼦")
print("问她, 约不约啊?")
print("oK. ⾛你!")
# 约⼀次
print("拿出⼿机")
print("打开陌陌")
print("找个漂亮的妹⼦")
print("问她, 约不约啊?")
print("oK. ⾛你!")
# 再来⼀次
print("拿出⼿机")
print("打开陌陌")
print("找个漂亮的妹⼦")
print("问她, 约不约啊?")
print("oK. ⾛你!")
while 1:
print("拿出⼿机")
print("打开陌陌")
print("找个漂亮的妹⼦")
print("问她, 约不约啊?")
print("oK. ⾛你!")
2. 函数的定义,函数名,函数体以及函数的调用
def 函数名():
函数体
def yue():
print("拿出⼿机")
print("打开陌陌")
print("找个漂亮的妹⼦")
print("问她, 约不约啊?")
print("oK. ⾛你!")
# 调⽤yue()函数
yue()
结果:
拿出⼿机
打开陌陌
找个漂亮的妹⼦
问她, 约不约啊?
oK. ⾛你!

终于可以约了,如果我还想约呢? 多次调⽤就可以了,很⽅便。
# 调⽤yue()函数
yue()
yue()
yue()
yue()
yue()
3. 函数的返回
def yue():
print("约你")
print("约我")
print("约他")
return
print("约谁呀") # 这句话不会被执⾏
yue()
def yue():
print("约你")
print("约我")
print("约他")
return "美⼥⼀枚"
girl = yue()
print(girl) # 美⼥⼀枚
def yue():
print("约你")
print("约我")
print("约他")
return "美⼥⼀枚", "萝莉⼀枚"
girl = yue()
print(type(girl)) # tuple
4. 函数的参数
def 函数名(参数列表):
函数体
def yue(chat):
print("拿出⼿机")
print("打开"+chat)
print("找个漂亮的妹⼦")
print("约不约")
yue("陌陌")
yue("微信")
yue("探探")
结果:
拿出⼿机
打开陌陌
找个漂亮的妹⼦
约不约
拿出⼿机
打开微信
找个漂亮的妹⼦
约不约
拿出⼿机
打开探探
找个漂亮的妹⼦
约不约
1. 形参写在函数声明的位置的变量叫形参,形式上的⼀个完整,表⽰这个函数需要xxx。2. 实参在函数调⽤的时候给函数传递的值,叫实参,实际执⾏的时候给函数传递的信息,表⽰给函数xxx。3. 传参给函数传递信息的时候将实际参数交给形式参数的过程被称为传参。
def yue(chat): # chat 形参
print("拿出⼿机")
print("打开"+chat)
print("找个漂亮的妹⼦")
print("约不约")
yue("陌陌") # 实参
len("字符串") # "字符串"在这⾥就是实参
print("麻花藤") # "麻花藤"就是实参
4.1 实参
4.1.1 位置参数
约到这⾥了,有没有想过这个问题,啥样的都约么? 哪⾥的都约么? 不⼀定吧,比如,我在北京,我很寂寞,我喜欢萝莉。在哈尔滨,很寂寞,御姐就⾏了, 需求是不⼀样的。 ⽽我
们现在的函数没有这些功能,那怎么办呢? 很简单,多来⼏个参数就好了。
def yue(chat, address, age): # 形参
print("拿出⼿机")
print("打开"+chat)
print("找个"+address+"附近漂亮的"+str(age)+"岁妹⼦")
print("约不约")
yue("微信", "北京", 18) # 实参
结果:
拿出⼿机
打开微信
找个北京附近漂亮的18岁妹⼦
约不约
分析: 在访问yue()的时候,我们按照位置的顺序分别把"微信","北京",18 赋值给 chat,
address,age。在传参过程中,系统会默认按照位置把实参赋值到形参。
4.1.2 关键字参数
位置参数好不好呢? 如果是少量的参数还算OK,没有问题,但是如果函数在定义的时候参数非常多怎么办? 程序员必须记住,我有哪些参数,⽽且还有记住每个参数的位置,否则函数
就不能正常调⽤了,那则么办呢? python提出了⼀种叫做关键字参数,我们不需要记住每个参数的位置,只要记住每个参数的名字就可以了。
def yue(chat, address, age):
print("拿出⼿机")
print("打开"+chat)
print("找个"+address+"附近漂亮的"+str(age)+"岁妹⼦")
print("约不约")
yue(chat="微信", age=18, address="北京") # 关键字参数.
结果:
拿出⼿机
打开微信
找个北京附近漂亮的18岁妹⼦
约不约
搞定,这样就不需要记住繁琐的参数位置了。
4.1.3 混合参数
可以把上⾯两种参数混合着使⽤,也就是说在调⽤函数的时候即可以给出位置参数,也可
以指定关键字参数。
# 混合参数
yue("微信", age=18, address="上海") # 正确.第⼀个位置赋值给chat, 后⾯的参数开始指定关键字.
yue(age="", "微信", address="⼴州") # 错误, 最开始使⽤了关键字参数, 那么后⾯的微信的位置就串了, 容易出现混乱
注意: 在使⽤混合参数的时候,关键字参数必须在位置参数后⾯
综上: 在实参的⾓度来看,分为三种:
1. 位置参数
2. 关键字参数
3. 混合参数, 位置参数必须在关键字参数前⾯
4.2 形参
在形参⾓度看. ⼀共分为三种. 这章我们学习两种
4.2.1 位置参数
按照位置来赋值,到⽬前为⽌,我们编写的函数都是这种。
def yue(chat, address, age):
print("拿出⼿机")
print("打开"+chat)
print("找个"+address+"附近漂亮的"+str(age)+"岁妹⼦")
print("约不约")
4.2.2 默认参数
在函数声明的时候,就可以给出函数参数的默认值。在调⽤的时候可以给出具体的值,也可以不给值,使⽤默认值。
比如,我们录入咱们班学⽣的基本信息,通过调查发现,我们班⼤部分学⽣都是男⽣,这个时候就可以给出⼀个sex='男'的默认值。
def stu_info(name, age, sex='男'):
print("录⼊学⽣信息")
print(name, age, sex)
print("录⼊完毕")
stu_info("张强强", 18)
注意, 必须先声明位置参数, 才能声明默认值参数.
综上: 在形参的⾓度来看
1. 位置参数
2. 默认值参数(⼤多数传进来的参数都是⼀样的, ⼀般⽤默认参数)
python基础(11):函数(一)的更多相关文章
- python基础11 ---函数模块1
函数模块 一.函数模块的作用(为什么要有函数模块) 1.函数模块可以减少代码量 2.函数模块方便阅读 3.函数模块维护性强二.函数模块的本质以及调用方法 1.函数模块的本质就是一个.py结尾的文件,该 ...
- python基础——filter函数
python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...
- 十一. Python基础(11)—补充: 作用域 & 装饰器
十一. Python基础(11)-补充: 作用域 & 装饰器 1 ● Python的作用域补遗 在C/C++等语言中, if语句等控制结构(control structure)会产生新的作用域 ...
- 八. Python基础(8)--函数
八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x): ' ...
- 『Python基础-11』集合 (set)
# 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...
- python基础——匿名函数
python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...
- python基础——返回函数
python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...
- python基础——sorted()函数
python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...
- python基础——匿名函数及递归函数
python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...
随机推荐
- javascript es6 Promise 异步同步的写法(史上最简单的教程了)
1 来个简单的例子 var p = new Promise(function(resolve, reject){ //做一些异步操作 setTimeout(function(){ console.lo ...
- C++入门到理解阶段二基础篇(7)——C++函数
目录 函数作用 函数定义 函数声明 函数调用 函数值传递 函数常见的样式 函数的分文件书写 函数作用 将经常使用的代码封装起来,减少重复代码 函数定义 C++ 中的函数定义的一般形式如下: retur ...
- ASP.NET Core 2.2 WebApi 系列【五】MiniProfiler与Swagger集成
MiniProfiler 是一款性能分析的轻量级程序,可以基于action(request)记录每个阶段的耗时时长,还是可以显示访问数据库时的SQL(支持EF.EF Code First)等 一.安装 ...
- requeests模块请求常用参数的写法整理
主要是针对写法 一.requests.get requests.get是调用了requests.request('get', url, params=params, **kwargs) 1.url 协 ...
- centOS如何灵活管理服务进程
1.将程序跑起来,且关闭会话时程序仍在运行. nohup node index.js & (头部加了nohup,表示在你退出帐户或关闭终端之后继续运行相应的进程;尾部的&表示在后台执 ...
- 【前端知识体系-NodeJS相关】对NodeJS模块机制的理解
1. CommonJS模块规范 1.1 模块引用 var math = require('math'); 1.2 模块定义 [!NOTE] 上下文提供exports对象用于导出当前模块的方法和变量,并 ...
- Kotlin Parameter specified as non-null is null
报错信息如下: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.j ...
- Spring Boot 2 + Redis例子
Redis是一个key-value数据库,支持存储的value类型包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).在 ...
- oracle表空间相关统计查询
部分转自 https://www.cnblogs.com/xwdreamer/p/3511047.html--查询表空间使用情况SELECT UPPER(F.TABLESPACE_NAME) &quo ...
- SQL Serve里DBA要去改变的3个配置选项
用安装向导安装了全新的SQL Server,最后你点击了完成按钮.哇噢~~~现在我们可以把我们的服务器进入生产了! 抱歉,那并不是真的,因为你的全新SQL Server默认配置是未优化的,一个合格的D ...