Python学习笔记(五)函数

SpringBoot+VUE3实战:如何用WebSocket搞定网页端语音通话(避坑指南) 本文详细介绍了如何使用SpringBoot和VUE3结合WebSocket技术实现网页端语音通话功能。从环境配置、WebSocket服务端实现到前端音频处理,提供了完整的开发指南和避坑建议,帮助开发者快速构建稳定高效的实时语音通信系统。 阅读详情

“Life is short, You need Python” – Bruce Eckel

Environment

  • OS: macOS Mojave
  • Python version: 3.7
  • IDE: Jupyter Notebook



0. 写在前面

函数体现的是面向过程的编程,如可以将训练模型的过程写成一个函数;类体现的是面向对象的编程,创造具有属性和方法的对象,如可以将一个模型定义为一个类实例化而来的对象。这里做一点儿学习笔记,内容包括函数相关的操作,需要关注变量的作用域问题,并且理解函数闭包。

使用函数的意义

  • 对一块代码进行封装,模块化地解决问题
  • 使需要重复使用的代码能够方便地被调用,且利于管理和维护

1. 函数的定义

def 语句 实现函数的定义

def 函数名(参数):
	""" 函数文档 """
	函数体
	return 返回值

返回值 = 函数名(参数) # 调用

对于在函数中调用另个函数的情况, Python 允许被调用的函数在之后定义

def bar():
    print('bar')
    
def foo():
    bar() # 之前定义
    baz() # 之后定义
    
def baz():
    print('baz')
    
foo()
  • 使用 “"" xxx """ , 在函数的开头编写函数文档,便于代码的维护。调用 函数名.__doc__ 得到函数文档的内容

例 计算 sigmoid 函数自变量分别为 0 , 1 0, 1 0,1 和 − 10 -10 −10 的结果
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1​

import math

def sigmoid(x):
    """sigmoid 函数"""
    return 1 / (1 + math.e**(-x))

print(sigmoid(0)) # 0.5
print(sigmoid.__doc__) # sigmoid 函数



执行一个定义好的函数可分为三步:

  1. 接收输入 —— 参数
  2. 运行处理 —— 函数体
  3. 输出结果 —— 返回值

1.1 设置参数

参数可分为形式参数(形参)和实际参数(实参)

  • 形参是指定义函数时使用的参数
  • 实参是指调用函数时传入的参数

例 在之前的 sigmoid 函数中

import math

def sigmoid(x): # 此处的 x 为形参
    """sigmoid 函数"""
    return 1 / (1 + math.e**(-x)) # 此处的 x 为形参

res = sigmoid(0) # 传入的 0 为实参



根据函数定义时的形式,参数可以分为位置参数、默认参数和可变长参数;根据函数调用时的形式,参数可以为关键字参数。


1.1.1 位置参数和默认参数

定义函数时,

  • 不设置参数的默认值,则为位置参数
  • 设置参数的默认值,则为默认参数,在调用时可不对该参数传值
  • 使用 *args 或 **kwargs ,则为可变长参数
  • 有严格的顺序要求:位置参数在最前,之后为默认参数,最后为可变长参数

例

# 其中,x 和 w 为位置参数,b 为默认参数,后俩为可变长参数
def foo(x, w, b=0):
    return w * x + b

# 调用,将 1 传给 x,将 2 传给 w
print(foo(1, 2)) # 2

注意 ⚠️ 勿将默认参数的值设置为可变类型,包括列表、字典和字符串,会搞出 bug!

# 在列表最后添加一个元素
def foo(ls=[]):
    ls.append(6)
    return ls

print(foo()) # [6]
print(foo()) # [6, 6]
print(foo()) # [6, 6, 6]

每次调用函数时,分配给形参的内存地址都是相同的,函数存在,形参就存在,这块内存不会被 Python 的垃圾回收机制清除

def foo(ls=[0, 1]):
    print(id(ls))
    ls.append(2)
    print(id(ls))

print(foo())
# 5187260680
# 5187260680
# [0, 1, 2]
print(foo())
# 5187260680
# 5187260680
# [0, 1, 2, 2]

1.1.2 关键字参数

调用函数时,

  • 若未指定形参,则为位置参数,严格按一一对应的顺序传入值
  • 若指定了形参,则为关键字参数,除去已传入的位置参数,剩余的参数数量上必须相同(指定参数后允许顺序打乱)
  • 有严格的顺序要求:位置参数在前,关键字参数在后

例

def foo(x, w, b=0):
    return w * x + b

# 使用关键字参数,允许传入的顺序与定义的顺序不一致
print(foo(2, b=3, w=1)) # 5
print(foo(w=1, 2, b=3)) # 报错 SyntaxError

1.1.3 仅位置参数

一些 Python 内置函数被定义为仅接受位置参数,如 float(x=0, /) ,在 / 之前的参数在调用函数时仅能以位置参数的形式传入,若以关键字参数形式传入,则报错。

print(float('1.1')) # 1.1

float(x='1.1') # 报错

不过从 Python 3.8 开始才允许用户在使用 def 语句定义函数时使用 / 定义仅位置参数。

1.1.4 可变长参数

  • 可变长(位置)参数 *args ,用于接收一些可能需要的额外参数

定义函数时,该参数放在最后(**kwargs 之前)。调用时先传入位置参数和关键字参数,之后剩余的参数以元组的形式打包传递给 args

def foo(a, b, c, *args):
    print(args) # 元组形式
    print((a, b, c, args))
    print((a, b, c, *args)) # 星号解包
    return None

baz(0, 1, 2, 3, 4)
# (3, 4)
# (0, 1, 2, (3, 4))
# (0, 1, 2, 3, 4)

  • 可变长关键字参数 **kwargs

定义函数时,该参数放在最后。调用时先传入前面的参数,剩余的以关键字形式传入的参数将以字典的形式打包传递给 kwargs

def bar(a, b, c, **kwargs):
    print(kwargs)
    print(a, b, c, kwargs)
    return None

bar(1, 2, 3, d=3, e=4)
# {'d': 3, 'e': 4}
# 1 2 3 {'d': 3, 'e': 4}

例 *args 和 **kwargs 一齐使用

def forw(x, *args, **kwargs):
    if len(args) == 0:
        y = x
    elif len(args) == 1:
        w = args[0]
        y = w * x
    elif len(args) == 2:
        w, b = args
        y = w * x + b
    else:
        print('Too many elements in *args')
        return None
    
    if len(kwargs) > 0:
        if kwargs['nonlinearity'] == 'relu':
            return max(0, y)
    
    return y

print(forw(2, -2, 3)) # -1
print(forw(2, -2, 3, nonlinearity='relu')) # 0

1.2 函数体

函数体是封装在函数内部的代码块,只有在调用该函数时才会被执行。

根据变量的作用域,可讲变量分为两类

  • 定义在函数内部的变量仅在该函数内部起作用,称为局部变量
  • 相对地,定义在函数外部的变量能够在全局起作用,称为全局变量

Python 函数体可以访问在其外部定义的变量(访问变量的顺序 LEGB:Local → \rightarrow → Enclosing → \rightarrow → Global → \rightarrow → Built-in),但无法修改不可变类型的变量(注意 ⚠️ 可变类型的变量可以修改,如列表、集合)

x = 6
def foo():
    y = x + 60 # 访问了全局变量
    print(y)
bar() # 66

def bar():
    x += 60 # 尝试修改全局变量
    print(x)
bar() # 报错
# UnboundLocalError: local variable 'x' referenced before assignment

dc = {1: 'one', 2: 'two'}
def baz():
    dc[3] = 'three'
baz()
print(dc) # {1: 'one', 2: 'two', 3: 'three'}

在 Python 函数体中定义变量时,可以用三种方式

  • 直接赋值,得到局部变量
  • 采用 global 关键字进行声明
  • 采用 nonlocal 关键字进行声明

1.2.1 直接赋值

该变量仅在函数体内部定义和作用

def foo():
    a = 6
    
foo()
print(a) # 报错 NameError

1.2.2 global 关键字

函数内部可以访问外部的全局变量,但无法对其进行修改;若需要修改,则需要使用 global 关键字进行声明

a = 6

def foo():
    global a
    a += 60
    print(a)
    
foo() # 66

1.3 返回值

使用 return 语句设定函数的返回值,该语句的执行代表函数执行的结束,这句完事后退出函数。

若一个函数内无 return 语句,则执行完所有函数体代码后返回 None;return 后跟多个变量以逗号隔开,则以元组的形式返回多个值

def foo():
    """返回为 None"""
    print()
    
def bar():
    """这是一个返回单个值的函数"""
    return 6

def baz():
    """这是一个返回元组的函数"""
    return 66, 666

print(foo()) # None
print(bar()) # 6
print(baz()) # (66, 666)

2. 匿名函数

匿名函数使用 lambda 变量: 函数体 定义并调用,简化了代码。

# 如判断三个样本属于第一类和第二类的概率
y = [
    [0.9, 0.1],
    [0.3, 0.7],
    [0.4, 0.6]
]

# 按照判断属于第一类的概率进行排列
y.sort(key=lambda x: x[0], reverse=True)
print(y)

3. 高阶函数

Python 中,函数为第一类对象,其可以赋值给一个变量、可以作为元素添加到组合类型中、可作为参数值传入其它函数,还可以当作其他函数的返回值。

以函数为参数或返回值为函数的函数称为高阶函数(High-order function)。

def high_order_func(func):
    return func


f = high_order_func(print)
f('hello') # hello

4. 函数的嵌套

4.1 概念

在一个函数中定义定义另一个函数,称为函数的嵌套。

def outer():
    print('outer is being called.')
    
    def inner():
        print('inner is being called.')
        print('inner done.')
        
    inner()
    print('outer done.')
    
    
outer()
# outer is being called.
# inner is being called.
# inner done.
# outer done.

4.2 nonlocal 关键字

若需要修改嵌套中外层函数的变量,则 global 关键字声明无法实现(global 只能修改到全局),此时需要 nonlocal 关键字声明

def outer():
    x = 6
    
    def inner():
        nonlocal x
        
        x += 60
        print(x)
    
    inner()
        
outer() # 66
print(x) # 报错 NameError

5. 闭包

5.1 闭包的概念

外层函数以内层函数为返回值,内层函数中引用了外层函数的变量,称为闭包(closure)。

例 1 内层函数无返回值

def affine_weight(w):
    print('Setting affine transform config...')
    b = 10
    
    def affine(x):
        print('result:', w * x + b)
        
    print('Config done.')
    return affine
    
    
transform = affine_weight(2)
# Setting affine transform config...
# Config done.

transform(3)
# result: 16

例 2 内层函数有返回值

def affine_weight(w):
    print('Setting affine transform config...')
    b = 10
    
    def affine(x):
        return w * x + b
        
    print('Config done.')
    return affine
    
    
transform = affine_weight(2)
# Setting affine transform config...
# config done.

print(transform(3)) # 16

5.2 闭包的变量

闭包的 __closure__ 属性是一个以 cell 对象为元素的元组,cell 对象的 cell_contents属性就是闭包中引用的变量。

transform.__closure__
# (<cell at 0x12da54f78: int object at 0x10054c6c0>,
# <cell at 0x12da54b58: int object at 0x10054c5c0>)
for elem in transform.__closure__:
    print(elem.cell_contents)
# 10
# 2

5.3 闭包的意义

闭包由一个函数与其可引用变量的外部环境所组成。

以下是维基百科的解释是

A closure, also lexical closure or function closure, is a technique for implementing lexically scoped name binding in a language with first-class functions. Operationally, a closure is a record storing a function together with an environment. The environment is a mapping associating each free variable of the function (variables that are used locally, but defined in an enclosing scope) with the value or reference to which the name was bound when the closure was created. Unlike a plain function, a closure allows the function to access those captured variables through the closure’s copies of their values or references, even when the function is invoked outside their scope.


从面向对象编程的角度理解(相关内容参考Python基础(六)类和对象):如果将闭包视作一个对象,那么

  1. 其可引用的外部环境的变量就是它的属性;

  2. 函数所执行的操作就是这个对象唯一的方法。

如下例所示,定义了三个进行仿射变换(方法)的闭包,而它们的参数(属性)不同。

# 定义三种不同的线性变换
def affine_params(w, b):
    def affine(x):
        res = w * x + b
        return res
    
    return affine

    
transform_1 = affine_params(3, 4)
transform_2 = affine_params(5, 10)
transform_3 = affine_params(8, 14)

print(transform_1(2)) # 10
print(transform_2(2)) # 20
print(transform_3(2)) # 30

5.4 闭包与装饰器

Python 中闭包的主要应用就是装饰器,内容参考Python基础(十)深浅拷贝与三大器 Part 4。

Vue2 - 实现H5人脸识别认证与活体检测功能(纯前端免费方案+微信人脸识别接口)完整源码,vue微信公众号网页h5端人脸识别功能人脸核身(微信方案提供后端spring boot+thinkphp) vue人脸识别插件,vue, h5人脸识别, 微信公众号, 活体检测, 人脸核身,人脸登录、人脸识别,VUE项目-H5端人脸识别功能实现,免费h5人脸识别插件方案,微信公众号H5网页实现人脸识别,vue人脸核身,Vue H5活体检测认证,人脸认证张嘴摇摇头指引动作,人脸核身 微信原生 H5(微信公众号)vue2调用手机摄像头并实现人脸识别的实现,微信h5人脸识别vue项目,PHP人脸识别,java人脸识别,h5页面,有免费的人脸识别接口吗,用于微信公众号及嵌套在微信浏览器,vue3如何实现人脸识别,微信人脸 阅读详情

相关推荐

STM32+W5500实战:5分钟搞定FreeModbus TCP移植(附完整代码)

本文详细介绍了如何在STM32微控制器上,结合W5500以太网芯片,快速完成FreeModbus TCP协议栈的移植,构建稳定可靠的工业级Modbus TCP服务器。内容涵盖硬件连接、软件架构、驱动适配、核心移植代码实现及调试优化技巧,旨在提供可直接应用于实际项目的完整解决方案。

life6的博客 878

JavaScript基础——Promise函数

异步操作 JavaScript的异步处理可以用回调函数,回调函数的使用就是确保一段代码执行完毕之后再执行另一段代码的方式 function doHomework(subject, callback){ console.log("start my " + subject + " homework."); callback(); } function finish(){ console.log(...

goldgirly的博客 1617

YOLOv11 Neck架构演进 - 从FPN/PAN到C2f/SPPF的融合策略实战剖析

本文深入剖析YOLOv11 Neck架构的演进历程,从FPN/PAN到C2f/SPPF的融合策略,详细解析了多尺度目标检测中的特征融合技术。通过实战案例展示了YOLOv11在无人机航拍等场景中的性能提升,特别是小目标检测AP值提升15%的显著效果,为计算机视觉开发者提供了宝贵的架构优化经验。

weixin_30500105的博客 433

root函数在python中的含义_python学习之路(12):python中函数的定义详解「2」

上一篇讲了函数的一部分内容,包括: 任意数量参数、强制关键字参数、返回多个值的函数、定义有默认参数的函数。今天再来讲一下python的函数,今天讲解的内容包括:1、 定义匿名函数2、 匿名函数捕获变量值3、 回调函数4、 访问闭包中定义的变量定义匿名函数当一些函数很简单,仅仅只是计算一个表达式的值的时候,就可以使用 lambda 表达式来代替了。lambda作为一个表达式,定义了一个匿名函数,比如...

weixin_32905035的博客 6998

解密Android相机框架:从HAL到应用层的全链路解析

本文深入解析Android相机框架的全链路架构,从应用层到硬件抽象层(HAL)再到驱动层,详细介绍了CamX-CHI架构的设计哲学与实战应用。通过HAL3接口、V4L2交互机制及Camera2 API的最佳实践,帮助开发者优化相机性能,解决多摄切换、预览卡顿等常见问题,提升成像效率与稳定性。

weixin_29238147的博客 408

保姆级教程:在华为MateBook E Go上安装安卓子系统(含Hyper-V配置和地区切换避坑指南)

本文提供在华为MateBook E Go(ARM架构)上安装Windows 11安卓子系统(WSA)的详细指南。重点阐述了ARM平台无需指令转译的流畅原生体验优势,并逐步讲解启用Hyper-V虚拟化、切换系统区域以安装Amazon Appstore、配置开发人员模式及使用ADB安装第三方应用(如华为应用市场)的全过程,助您解锁高效的原生安卓应用生态。

kafka6courier的博客 533

Python中使用Scipy模块中root函数求解非线性方程的解法举例

Python中的SciPy模块功能强大,下面举例说明使用该模块求解非线性方程或非线性方程组。在求解时候,用到scipy.optimize模块中的root函数。通过上面的例子可知scipy模块中root函数求解方程数值解的方法。

qq_18937049的博客 3984

【win11+vs 2017+OpenCV4.5.5+Qt5.12配置】详细安装过程+小问题解决

由于Qt5无法与最新的vs2022兼容,扩展工具中一直显示不可用,所以将vs降级成vs2017。在安装Qt的过程中,会选择安装Qt套件,其中就的MCVS 2017,说明vs2017是与qt兼容的。当然也可以用qt creator这一原生IDE。OpenCV版本目前是最新的4.8.0,使用过程中没有什么问题,但是还是安装低版本大概率避免一些玄学问题。

qq_45306739的博客 3350

root函数在python中的含义_python学习之路(11):python中函数的定义详解「1」

使用 def 语句定义函数是所有程序的基础。前几篇文章里的代码都有用到函数,在这篇文章里对函数详细讲解一下定义与使用模式。包括的内容有:1、 任意数量参数2、 强制关键字参数3、 返回多个值的函数4、 定义有默认参数的函数下面来分别介绍一下。可接受任意数量参数的函数有时候我们定义一个函数,但又不确定参数个数的时候,就可以定义一个任意数量参数的函数,在定义的时候可以使用"*"(星号)定义函数。例如:...

weixin_39600319的博客 2370

matlab实现MSK调制解调

文章目录一、要求二、设计三、代码四、结果五、结论 一、要求 画出MSK信号产生的信息、I路、Q路信号对比图以及接收端解调的信息恢复的对比图。 二、设计 1.MSK调制 2.MSK解调 三、代码 clear all;clc; N=20; T=1; fc=10; Fs=100; bitstream=randi([0,1],1,N); bitstream1=2*bitstream-1; b0=1; for i=1:N encode_output(i)=b0*bitstream

Time_book的博客 1万+

Open-Sora代码详细解读(2):时空3D VAE

目前开源的DiT视频生成模型不是很多,Open-Sora是开发者生态最好的一个,涵盖了DiT、时空DiT、3D VAE、Rectified Flow、因果卷积等Diffusion视频生成的经典知识点。本篇博客从Open-Sora的代码出发,深入解读背后的原理。

沉迷单车的追风少年 2053

Py函数直接传入root是啥意思_使用python语言开发ROOT之搭建环境方法探索

这里指的是使用python调用ROOT的模块,编写程序用来处理数据的环境搭建方法。经过研究,一般有四种方案环境变量法,主要依靠ROOT本身,环境变量是关键预编译包,但是该方法没有证实成功搭建pyroot环境,成功概率很小。源码编译,未尝试,成功概率一般。docker方法,未尝试,成功概率很大。python扩展库法,采用conda安装,实测可以用。ROOT本身已经支持,只要一行命令即可,完...

weixin_39759107的博客 682

YOLOv8/v9实战:从零搭建智慧零售货架管理系统(附完整可运行代码)

摘要:本文基于YOLOv8/v9目标检测算法,详细讲解智慧零售货架管理系统的开发流程,解决传统人工巡检效率低、漏检率高的问题。内容涵盖环境配置、商品检测、陈列分析、价格标签验证等核心功能实现,提供可运行代码及零售专用数据集训练方法。系统支持实时货架状态监控、缺货预警与数据分析,帮助零售企业降低运营成本30%以上。 关键词:YOLOv8、YOLOv9、智慧零售、货架管理、商品检测 标签:YOLOv8、YOLOv9、目标检测、零售AI、Python

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1309

【Python学习笔记】五、函数

文章目录创建函数函数的文档注释函数参数的传递关键字参数可变参数将序列作为函数的参数值作用域函数嵌套 创建函数 定义函数使用def语句 #计算斐波那契数列 def fibs(n): res=[0,1] for i in range(n-2): res.append(res[-1]+res[-2]) return res while True: m=in...

道阻且长,行则将至 371

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

python学习笔记五——函数

ef greet_user(username) : """显示简单的问候语""" print("你好" + username . title() + "!这是一个简单的例子,关键字def告诉python要定义一个函数,greet_user()是函数名,括号中的username是调用函数时需要指定的信息,定义以冒号结尾。紧跟在定义后面的所有缩进行构成了函数体。要调用函数,只需要依次指定函数名及括号括起的必要信息。

weixin_37624766的博客 395

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Python学习笔记之五:Python中的函数与模块

Python学习笔记之五:Python中的函数与模块 1 函数 1.1 函数的定义 函数是带有名字的代码块,用于完成具体的工作 1.2 函数的使用 使用def语句定义函数,def function():语句后面的所有的缩进行构成了该函数的函数体,python中的函数也可以带参数,而且在定义函数时可以不指定参数的数据类型,即参数可以是数字,字符串,也可以是列表或者字典。python中的函数也可以有返回值,返回值的数据类型同样可以是任何数据类型,具体使用方法如下实例所示 def say_hello(): pr

weixin_42711014的博客 560

Python学习笔记(五)返回函数

Python的函数不但可以返回int、str、list、dict等数据类型,还可以返回函数!例如,定义一个函数 f(),我们让它返回一个函数 g,可以这样写:def f(): print 'call f()...' # 定义函数g: def g(): print 'call g()...' # 返回函数g: return g仔细观察上面的函数...

weixin_38671526的博客 633

Python学习笔记(五)函数和代码复用

Python学习笔记(五)函数和代码复用一、函数的定义和使用(1)函数的定义(2)函数的使用及调用过程(3)函数的参数传递1、参数个数2、可选参数传递3、可变参数传递4、参数传递的两种方式5、函数的返回值6、局部变量和全局变量7、lambda函数返回函数名作为结果二、七段数码管(实例)(1)需求分析(2)基本思路(3)代码实现(3)代码优化三、代码复用与函数递归(1)代码复用与模块化设计(2)函数...

嘘嘘的小粥 946

python学习笔记五(函数基础)

博主在学完python基本数据类型后就开始迫不及待的去编写自己的程序去了,但是写出来的程序总是和大神的差了不是一星半点,后来发现那是因为我和大神之间差了n个函数w(゚Д゚)w,因此勤学努力的博主又去学习了帮助python高逼格编程的函数^_^ 函数定义 python 定义函数的格式如下: def function_name(形参列表): function_body return...

周末饺子配啤酒的博客 422

python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤:函数能提高应用的模块性,和代码的重复利用率。在很多高级语言中,都可以使用函数实现多种功能。在之前的学习中,相信你已经知道Python提供了许多内建函数,比如print()。同样,你也可以自己创建函数,这被叫做用户自定义函数,来实现定制的功能。一、函数的基本使用1.函数的定义函数是一段具有特定功能的、可重用的语句组,用函数名来表示...

weixin_42143221的博客 4439

Python小白学习笔记五 (函数 1)

函数 function pycharm快捷键 Ctrl + P 参数信息(在方法中调用参数) Ctrl + Q 快速查看文档 Ctrl + Alt + M 提取方法 定义 1.用于封装一个特定的功能,表示一个功能或者行为。 2.函数是可以重复执行的语句块, 可以重复调用。 作用 提高代码的可重用性和可维护性(代码层次结构更清晰)。 """ 函数内存分布 """ # 1. 将函数的字节码加载到内存中(代码区) def func01(): a = 10 # 2.

weixin_45610121的博客 222

python学习笔记(五)函数

1. 什么是函数 2. 调用函数 3. 编写函数 1. def定义函数,然后依次写出函数名、括号、括号中的参数和冒号,函数的返回值用return语句返回 2. 没定义return的会返回none4. 返回多值 1. 直接定义return返回多个值就好了,其实返回多值时是返回一个tuple,而多个变量可以同时接受一个tuple,按位置赋给对应的值。5. 递归函数 1.

geyao2015的博客 534

Python 学习笔记(五)常用函数

Python内建函数   四舍五入: round()   绝对值: abs() 1 >>> round(1.543,2) 保留两位小数,四舍五入为1.54 2 1.54 3 >>> round(1.546,2) 保留两位小数,四舍五入为1.55 4 1.55 5 >>> round(-1.536,2...

103

Python小白学习笔记五 (函数形参2)

函数形参定义方式parameter 缺省形参 1.语法: def 函数名(形参名1=默认实参1, 形参名2=默认实参2, ...): 函数体 2.说明:缺省参数必须自右至左依次存在,如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数。 缺省参数可以有0个或多个,甚至全部都有缺省参数。 位置形参 语法: def 函数名(形参名1, 形参名2, ...): 函数体 命名关键字形参 1.语法: 方法1: def 函数名(*args, 命名关键字形参1

weixin_45610121的博客 438

Python学习笔记之函数(五)

1、函数的优点之一是,使用它们可将代码块与主程序分离。通过给函数指定描述性名称,可让主程序容易理解得多。我们可以将函数存储在被称为模块的独立文件中,再将模块导入到主程序中。import语句允许在当前运行的程序文件中使用模块中的代码,这样就可以共享这些文件,并重用这些函数。 2、导入整个模块,要让函数是可导入的,得先创建模块。模块是扩展名为.py的文件,包含要导入到程序中的代码。接下来附上简单的示...

茕夜 472
上一篇: Python学习笔记(四)控制结构
下一篇: Python学习笔记(六)类和对象
longrootchen
博客等级 码龄7年 19粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值