5.1Python函数(一)

时间:2022-08-09 02:06:03

目录

前言

分模块思想,分任务编程,是编程的一大重要思维,其中的实现,函数就担当了一个重要角色,今天我们就来学习Python的初级函数。

(一)函数的基本知识

(1)函数的优点

  1. 体积小,减少内存大小,冗余度小。
  2. 重用性强,可重复利用。
  3. 维护方便。
  4. 分解任务,简化逻辑,使代码更加模块化。

(2)函数的分类

  1. 内建函数
  2. 三方函数
  3. 自定义函数

(二)函数的基本使用

1.函数的简单定义

(1)语法说明

def 函数名():

​ 函数体

(2)源代码

# 定义一个简单函数
def test():
print(2**2)
print(2**3)
print(2**4) # 调用函数
test()

(3)输出效果

5.1Python函数(一)

2.传值函数

(1)语法说明

定义语法:

def 函数名(var1,var2,……)

​ 函数体

调用的时候,有两种方式:

  1. 顺序调用,要求实参与形参一一对应。
  2. 关键字调用,可以不按照顺序调用。

(2)源代码

# 定义一个带参数的函数
def test(var1, var2):
print(var1+var2)
print(var1**2+var2**2)
print(var1**3+var2**3) # 顺序调用带参数的函数
print("顺序调用")
test(1, 2) # 关键字调用带参数函数
print("关键调用")
test(var2=2, var1=1)

(3)输出效果

5.1Python函数(一)

3.不定长函数

(1)语法说明

当形参为下面两种形式的时,为不定长参数

  1. *args --- 接收为元组类型, 只要使用星号就可以,名字没关系,习惯用args而已。
  2. **kwargs ---接收为字典类型。其传值时,必须是关键字传值。

注意:装包与拆包

  1. 装包:args与kwargs 就是表示整个元组与字典的整体,叫装包
  2. 拆包:*args 与 **kwargs 表示元组和字典的每个元素,叫拆包

(2)源代码

# 定义不定长的参数- *args 接收的是元组类型
def test1(*args):
print(args, type(args))
print(*args) # 定义不定长的参数- *args 接收的是字典类型
def test2(**kwargs):
print(kwargs, type(kwargs))
# 输出keyword
print(*kwargs)
# 使用value,不能打印出来,不过可以使用
# 而且形参与实参的keyword一样,其实就是关键字调用
test3(**kwargs) def test3(a, b, c):
print(a)
print(b)
print(c) # 调用参数,并接收的是 元组
test1(1, 2, 3) # 调用参数,并接收的是 字典
test2(a="zsj", b=18, c="m")

(3)输出效果

5.1Python函数(一)

4.缺省函数

(1)语法说明

在定义函数的时候,给形参赋值,就是缺省函数,所赋的值便是默认值,

def test(name="me")

而在调用的时候,可以传入参数,也可以不传入参数。

传入参数时,以所传的参数优先。

不传入参数时,为默认值。

(2)源代码

# 定义缺省参数
def test(name="zyg"):
print(name) # 不传入参数, 默认值
test()
# 传入参数,优先值是传入的值
test("me")

(3)输出效果

5.1Python函数(一)

5.函数的传值过程

(1)语法说明

在python里函数的传值:都是引用传递

  1. 值传递(从实参复制一个副本)传递给形参
  2. 引用传递(直接把实参的id)传给形参

Python的可变数据类型与不可变数据类型

  1. 可变数据类型:value值改变,id值不改变。(列表,字典)
  2. 不可变类型:value值改变,id值随之改变。(数值类型,字符串类型,布尔类型,元组类型)

Python里函数是否可以改变实参内容问题

  1. 若实参是可变数据类型,则可以实参内容
  2. 若实参是不可变数据类型,则不可以实参内容

(2)可变类型的实例

# 定义一个函数,用id()来判断其是值传递,还是地址传递?

def test(num):
print(id(num))
num[1] = 5
print(num)
print(id(num)) list1 = [1, 2, 3]
print(id(list1))
test(list1)
print("最后的id", id(list1))
print("最后的值", list1)

5.1Python函数(一)

(3)不可变类型的实例

# 定义一个函数,用id()来判断其是值传递,还是地址传递?

def test(num):
print(id(num))
num = 5
print(num)
print(id(num)) number = 1
print(id(number))
test(number)
print("最后的id", id(number))
print("最后的值", number)

5.1Python函数(一)

6.具有返回值函数

(1)语法说明

当我们需要函数处理过后,返回一个结果值。可以使用

return 结果值

结果值:可以是元组类型,列表类型,拆包后的数据

(2)源代码

# 定义一个具有返回值的函数

def test(a, b):
mysum = a + b
mysub = a - b
return (a, b) n1 = 4
n2 = 2
sum_1, sub_1 = test(n1, n2)
print(sum_1)
print(sub_1)

(3)输出效果

5.1Python函数(一)

7.函数的使用说明

(1)说明:

函数的说明都有一个标准的写法,才能调用help查看

def 函数名():

​ """

​ 功能:xxxxx

​ var1:

​ var2:

​ ....

​ return xxxx

​ """

查看帮助可以用:help(函数名) ,注意是函数名,不是函数调用。

(2)源代码

# 定义一个具有返回值的函数
def test(a, b=1):
"""
功能:该函数实现两个值的加减,并返回结果。
:param a: 参与运算的一个值,数字类型,不可选,无默认值
:param b: 参与运算的另一个值,数字类型,可选,默认值为1
:return: 和与差的结果,元组类型。例如 (1, 2)
"""
mysum = a + b
mysub = a - b
return (a, b) # 查看帮助
help(test)

(3)输出效果

5.1Python函数(一)

作者:Mark

日期:2019/02/02 周六

5.1Python函数(一)的更多相关文章

  1. 5.2Python函数(二)

    目录 目录 前言 (一)偏函数 ==1.说明== ==2.原代码== ==3.显示效果== (二)高阶函数 ==1.说明== ==2.源代码== ==3.运行效果== (三)返回值函数 ==1.说明= ...

  2. 2.1Python数据处理篇之---内建有关数学的函数

    目录 目录 前言 (一)数学相关得内建函数 (二)具体演示 1.求绝对值 2.创建一个复数 3.求商和余数 4.求x得y次幂 5.生成一个序列 6.四舍五入 7.对一个集合求和 8.求最大值 9.求最 ...

  3. 【学习总结】GirlsInAI ML-diary day-14-function函数

    [学习总结]GirlsInAI ML-diary 总 原博github链接-day14 认识函数function 函数相当于一个固定的公式,一个映射.有输入,有输出. 1-python内置函数 max ...

  4. PYDay6- 内置函数、验证码、文件操作、发送邮件函数

    1.内置函数 1.1Python的内置函数 abs() dict() help() min() setattr() all() dir() hex() next() slice() any() div ...

  5. 17.3.13---join函数

    1-----Python中有join()和os.path.join()两个函数,具体作用如下:     join():    连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成 ...

  6. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  7. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  8. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  9. C++对C的函数拓展

    一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...

随机推荐

  1. 【BZOJ-4726】Sabota? 树形DP

    4726: [POI2017]Sabota? Time Limit: 20 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 128  Solved ...

  2. Java设计模式之单例模式(Singleton)

    前言: 在总结okHttp的时候,为了管理网络请求使用到了单例模式,晚上实在没啥状态了,静下心来学习总结一下使用频率最高的设计模式单例模式. 单例模式: 单例模式确保某个类只有一个实例,而且自行实例化 ...

  3. page80-栈用例-算术表达式求值

    表达式由括号, 运算符和操作数(数字)组成.我们根据以下4中情况从左到右逐个将这些实体送入栈处理. (1)将操作数压入操作数栈: (2)将运算符压入运算符栈: (3)忽略左括号: (4)在遇到右括号时 ...

  4. 其实没那么复杂!探究react-native通信机制

    近段时间来Android上最火的框架非react native莫属了,这里我不去评价这个框架的好坏,毕竟只有用过的人才会有深刻的体会.但是我个人有一个习惯,在使用一个开源库之前,一定要看过它的源码,不 ...

  5. (SQL Analyzer services)定义链接维度

    链接文档是在一个 Analysis Services 数据库中存在.但在相同版本和兼容级别的另一个 Analysis Services 数据库中重复使用的一种文档. 链接文档是只读的. 如果您想要修改 ...

  6. 如何在Ubuntu 18.04中安装VMware Workstation Player

    参考链接 如何在Ubuntu 18.04中安装VMware Workstation Player https://www.sysgeek.cn/ubuntu-18-04-install-vmware- ...

  7. 数据库学习二三事儿(不打代码永远get不到的东西)

    针对聚合函数: 1.在自己打的过程中,发现如果select里面有一个列名有被聚合函数用到,比如: 这里的count和Sum_salary均邮局和函数,照理来说branchNo是不能搞进去的,但是它被g ...

  8. Tensorflow object detection API 搭建物体识别模型(二)

    二.数据准备 1)下载图片 图片来源于ImageNet中的鲤鱼分类,下载地址:https://pan.baidu.com/s/1Ry0ywIXVInGxeHi3uu608g 提取码: wib3 在桌面 ...

  9. Centos 7 官网下载安装mysql server 5.6

    Centos 7 官网下载安装 mysql server # wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rp ...

  10. mysql 导出 sql的执行结果到 csv文件

    需求: 1. 执行某 SQL 的结果: 2. 将结果导出到 csv文件: 3. 通过命令行执行: mysql ;" | sed 's/\t/","/g;s/^/&quot ...