函数是组织好的, 可重复使用, 用来实现单一,或相关功能的代码段。
## 函数的定义
* 函数代码块以def 关键词开头, 后接函数标识符名称和圆括号
* 任何传入的参数和自变量放在圆括号中间。圆括号之间可以用于定义参数。
* 函数的第一行语句可以选择性地使用文档字符串-用于存放函数说明
* 函数内容以冒号开始,并且缩进
* `return [表达式]` 结束函数, 选择性地返回一个值给调用方。不带表达式的return 相当于返回None
语法:
```
def 函数名( 参数列表 ):
"函数_文档字符串"
函数体
return [expression]
```
实例:
```
# 定义
def myfunc():
print("My Function")
# 调用
myfunc()
```
```
def max(a,b):
if a>b:
return a
else:
return b
a = 3
b = 4
print(max(a,b))
```
*****
在 Python 中,函数是一种可重复使用的代码块,它可以执行一个特定的任务。你可以在你的程序中任何地方调用一个函数,使得代码更易读,更易理解。
* 以 def 关键字开头,后接函数标识符名称和圆括号**()**
* 圆括号之间可以用于定义参数
* 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
* 函数内容以冒号起始,并且缩进
* return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None
Python 中的函数用 def 关键字定义,后面跟着函数名和括号。函数内的代码块应缩进。
这里有一个简单的函数定义和调用的例子:
python
Copy code
# 定义一个函数
def greet():
print("Hello, world!")
# 调用这个函数
greet()
这个函数没有参数,也没有返回任何值。如果想要一个函数接受参数,我们可以在括号中指定参数,如下:
python
Copy code
# 定义一个接受参数的函数
def greet(name):
print("Hello, " + name + "!")
# 调用这个函数
greet("Alice")
如果要返回一个值,可以使用 return 关键字,如下所示:
python
Copy code
# 定义一个返回值的函数
def add_two_numbers(num1, num2):
return num1 + num2
# 调用这个函数并获取返回值
sum = add_two_numbers(3, 4)
print(sum) # 输出 7
在 Python 中,函数也可以接受可变数量的参数,有默认值的参数,甚至可以返回多个值。
## 参数传递
在Python 中, 类型属于对象, 变量是没有类型的。
`a=[1,2,3]`
* `[1,2,3]` 是List 类型
* 变量a 没有类型
strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
* 不可变类型: a=5 之后 a=10 , 新增一个int值对象, 5 被丢弃, 相当于新生成a
* 可变类型: a=[1,2,3,4] , 元素改变, 本身没有变
参数传递:
* 不可变类型: 值传递
* 可变类型: 引用传递
python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
## 参数类型
* 必备参数
* 关键字参数
```
#可写函数说明
def printme( str ):
"打印任何传入的字符串"
print str
return
#调用printme函数
printme( str = "My string")
```
* 默认参数
```
#可写函数说明
def printinfo( name, age = 35 ):
"打印任何传入的字符串"
print "Name: ", name
print "Age ", age
return
```
* 不定长参数
```
def functionname([formal_args,] *var_args_tuple ):
"函数_文档字符串"
function_suite
return [expression]
```
加了星号(\*)的变量名会存放所有未命名的变量参数。
## 匿名函数
使用 lambda 来创建匿名函数
```
lambda [arg1 [,arg2,.....argn]]:expression
```
```
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )
print "相加后的值为 : ", sum( 20, 20 )
```
## return 语句
return语句\[表达式\]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None
## 变量作用域
- 前言
- 1.入门篇
- Python介绍
- 安装与使用
- Python开发利器之VS Code
- 模块安装
- 命令行
- 一次Python无法安装模块的问题探索与解决之旅
- 命令运行
- Conda
- 下载地址
- 2.基础篇
- 基础语法
- 输入与输出
- with as的用法
- 注释
- Python命令行参数
- 编码
- 变量类型
- 列表遍历
- 运算符
- 表达式语句
- 条件
- 循环
- 日期和时间
- 函数
- 高级语法
- @符号-装饰器
- 模块和包
- name
- init.py
- 错误和异常
- 面向对象
- 3.专题篇
- 常用功能
- Python 字符串连接
- python web
- Python CGI编程
- Python OAuth2
- 认证 Flask-HTTPAuth
- 常用命令
- 内置函数
- dir()
- print(f)
- 标准模块
- sys
- pickle-数据序列化
- os
- IO(输入输出)
- 键盘输入
- 文件读写
- 测试
- Python测试框架之pytest快速入门
- pytest-bdd快速示例和问题解决
- 基于pytest-bdd的项目目录结构和命名规范
- python BDD 的相关概念
- Behave介绍和快速示例
- Python BDD之Behave测试报告
- Python BDD 框架比较之 pytest-bdd vs behave
- pytest进阶
- Flask + pytest测试
- 参考网址
- pytest-bdd进阶
- hehave进阶
- 测试路径
- python + selunium
- HTML 根据多层CSS 查找元素
- 等待执行
- 使用text 查找 span
- pytest如何在控制台输出
- 4.问题篇
- pip pip3 及区别
- TypeError: can only concatenate str (not "NoneType") to str
- 5.实战篇
- matplotlib-绘图包
- 导入类
- 命名规范
- 模块查找
- 6.进阶篇
- Flask
- Flask介绍
- Flask扩展模块
- Flask-Login
- 问题
- Jinja2
- Flask-RESTful
- Flask-JWT-Extended
- WSGI
- Flask-SQLAlchemy
- 部署
- Flask VS Django
- Flask Web
- Flask + Vue
- Flask实战
- Flask 标准目录结构
- Blueprints
- 参考
- FastAPI 测试
- https 证书 Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate