python学习笔记-05

news2025/1/16 14:02:54

函数

基本上所有的高级语言都支持函数,函数就是一种代码抽象的方式。之前所使用的len、print等都是python的内置函数。

1.初识函数

在编写程序过程中,如果一段代码经常出现,为了提高编写效率,将这类实现某个功能的代码作为一个小模块,这就是函数。
1.1 函数定义

def 函数名(参数1,参数2...):
      函数体即代码块

1.2 函数调用

函数名(值1,值2...)
即可调用

1.3 函数说明文档

一般在函数第一行加函数说明信息,在pycharm中打三个单引号后回车自动补充格式,其实也就是多行注释
#无参数函数定义:
def printInfo():
    '''
    这个函数是用来打印的,这就是函数说明文档
    :return:
    '''
    print('第一个函数实现')
    pass
#函数调用:
printInfo()

2.函数参数

在这里插入图片描述
如果不传参数,函数就没那么灵活,相对死板。

#有参数函数定义:
def printInfo(name,height,weight,age):
    '''
    这个函数是用来打印的,这就是函数说明文档
    :return:
    '''
    print('%s的身高是%d'%(name,height),end=' ')
    print('%s的体重是%d'%(name,weight),end=' ')
    print('%s的年龄是%d'%(name,age))
    pass
#函数调用:
printInfo('小明',1.73,45,12)
printInfo('小清',1.76,60,15)
printInfo('小红',1.88,70,28)

参数的分类:
1.缺省参数:默认参数
2.可选参数:
3.必选参数:如上面的height、weight、name、age,必须传参
4.关键字参数:
在使用过程中,我们往往是混合使用以上类型的
#1.必选参数:就是其他语言中的正常传参
def sum(a,b):    #a,b是形式参数,形参。在定义的时候没有开辟内存地址
    print(a+b)
    pass
sum(2,3)   #2,3是实参,占用内存地址
#sum()   #如果不传参或者少传参都会报错
#2.缺省参数:在调用的时候如果没赋值就会使用默认的值。缺省参数始终存在于参数列表的最后一个
def sum1(a=20,b=30):
    print(a+b)
    pass
sum1()
sum1(10)
sum1(49,33)
# def sum2(a,b=20,c):
#     print('这种就是不规范的,b已经是缺省参数了,c就不可以是必选参数')
#     pass
#3.可选参数,就是可变长参数:当参数的个数不确定时使用
def getComputer(*args):
    '''
    表示可变长的参数
    :param args:
    :return:
    '''
    print(args)
    pass
getComputer()
getComputer((1,2,3,4,5,6))   #输出来是以元组类型输出数据,调用的时候传几个参数都可以
print(getComputer((1,2,3,4,5,6)))
#4.关键字可变参数:在函数体内,关键字参数是一个字典类型,key是一个字符串
def keyFun(**kwargs):
    print(kwargs)
    pass
#keyFun(1,2,3)    这种是错的,应该按字典传参
dictA={'name':'sad','age':11}
keyFun(**dictA)             #以字典传
keyFun(name='ss',age=11)    #以命名方式传

在这里插入图片描述

#混合使用
def complexFun(*args,**kwargs):
    print('第一个参数:',end=' ')
    print(args,end=' ')
    print('第二个参数:',end=' ')
    print(kwargs)
    pass
dictA={'name':'zhangxue','age':11}
complexFun(12,dictA)  #如果采用字典传参会识别到第一个
complexFun(12,name='msj') #采用键值对传参就会识别到第二个
complexFun(name='hk',age=11)
complexFun(11,678,827)
#可选参数必须放到关键字可变参数之前,不然会报错

在这里插入图片描述

3.函数返回值

函数返回值就是指函数调用完成后传给调用者的结果。

函数返回值:
如果在函数的内部有return就有返回值,否则返回空值
可以返回任意类型的值,在一个函数体内可以出现多个return关键字,但是最终只能返回一个值
如果执行了return,则代表函数执行完成,后续将不再执行
def sum(a,b):
    return a+b
c=sum(1,2)
print(c)
#如果要返回多组数,可以返回列表、元组
a=0
def add(num):
    '''
    返回列表类型
    :param num:
    :return:
    '''
    a=num
    li=[]
    i=0
    while i<=10:
        a+=i
        li.append(a)
        i+=1
        pass
    return li
print(add(19))
print(type(add(19)))
def tu():
    '''
    返回元组类型
    :return:
    '''
    return 1,2,3
print(type(tu()))
print(tu())
def di():
    '''
    返回字典类型
    :return:
    '''
    return {'name':'11','age':11}
print(di())
print(type(di()))

在这里插入图片描述

4.函数嵌套调用

#嵌套调用
def fun1():
    print('-------------第一个函数开始--------------')
    print('-------------第一个函数执行--------------')
    print('-------------第一个函数结束--------------')
    pass
def fun2():
    print('-------------第二个函数开始,调用第一个函数')
    fun1()
    print('-------------第二个函数结束--------------')
    pass
fun2()

在这里插入图片描述

函数的分类:
1.有返回值有参数
2.有返回值没参数
3.没返回值有参数
4.没返回值没参数

5.实践

在这里插入图片描述
5.1 函数练习1

i=0
def fun1(*args):
    sum=0
    for i in args:
        sum+=i
        pass
    return sum
print('-----------第一个函数练习------------')
print(fun1(1,2,3,4,5,6,3,2,5,99))

5.2 函数练习2

def fun2(a):
    li=[]
    l=len(a)
    i=1
    while i<l:
        if i%2!=0:
            li.append(a[i])
            pass
        i+=1
    return li
print('-----------第二个函数练习-----------')
print('传元组:',end=' ')
print(fun2((1,2,3,4,5)))
print('传列表:',end=' ')
print(fun2([1,2,3,4,5,6,7,8,9]))

5.3 函数练习3

print('-----------第三个函数练习:----------')
def fun3(**kwargs):
    '''
    处理字典类型的数据
    :param kwargs: 字典类型
    :return: 字典类型
    '''
    for key,value in kwargs.items():
        if len(value)>2:
            kwargs[key]=value[0:2]
            pass
        pass
    return kwargs  #这里也可以声明一个新的字典返回
print(fun3(name='sdxfd',age='eleven',sex='nv',height='1.98',li=[1,2,3]))

5.4 综合代码

i=0
def fun1(*args):
    sum=0
    for i in args:
        sum+=i
        pass
    return sum
print('-----------第一个函数练习------------')
print(fun1(1,2,3,4,5,6,3,2,5,99))
#0,1,2,3,4,5,6,7,8,9
def fun2(a):
    li=[]
    l=len(a)
    i=1
    while i<l:
        if i%2!=0:
            li.append(a[i])
            pass
        i+=1
    return li
print('-----------第二个函数练习-----------')
print('传元组:',end=' ')
print(fun2((1,2,3,4,5)))
print('传列表:',end=' ')
print(fun2([1,2,3,4,5,6,7,8,9]))
print('-----------第三个函数练习:----------')
def fun3(**kwargs):
    '''
    处理字典类型的数据
    :param kwargs: 字典类型
    :return: 字典类型
    '''
    for key,value in kwargs.items():
        if len(value)>2:
            kwargs[key]=value[0:2]
            pass
        pass
    return kwargs  #这里也可以声明一个新的字典返回
print(fun3(name='sdxfd',age='eleven',sex='nv',height='1.98',li=[1,2,3]))

在这里插入图片描述

答案并不唯一,条条大路通罗马,随着各位的思路能够得出正确答案的就是正确答案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1790926.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络安全】Web安全基础 - 第二节:前置基础知识- HTTP协议,握手协议,Cookie及Session

本章节主要介绍一些基础知识 d(^_^o) HTTP协议 什么是HTTP 超文本传输协议&#xff08;HyperText Transfer Protocol&#xff09;是一种用于分布式、协作式和超媒体信息系统的应用层协议。 HTTP是一个基于请求与响应&#xff0c;无状态的&#xff0c;应用层协议&#xff0c;…

推荐系统学习 一

参考&#xff1a;一文看懂推荐系统&#xff1a;召回08&#xff1a;双塔模型——线上服务需要离线存物品向量、模型更新分为全量更新和增量更新_数据库全量更新和增量更新流程图-CSDN博客 一文看懂推荐系统&#xff1a;概要01&#xff1a;推荐系统的基本概念_王树森 小红书-CSD…

Web网站攻击技术

文章目录 Web应用体系结构脆弱性分析HTTP协议安全问题Cookie的安全问题 常见Web应用攻击及防范SQL注入攻击及防范SQL注入原理 防御注入漏洞跨站脚本(XSS)攻击及防范跨站脚本(XSS)攻击原理 跨站脚本攻击类型储存式XSS反射式XSSDOM式XSS Cookie欺骗及防范CSRF攻击及防范防御CSRF攻…

python图像识别库-pytesseract

内容目录 一、安装1.安装tesseract OCR1) MAC中安装2) Windows中安装3) 中文报下载 二、pytesseract的简单使用 pytesseract是python的一个用于图像提取的库, 它实际上是对Tesseract OCR引擎的封装。pytesseract使得在Python项目中调用Tesseract变得更加简便&#xff0c;主要用…

Python实现定时任务的方式

大家好&#xff0c;在当今数字化的时代&#xff0c;定时任务的需求在各种应用场景中频繁出现。无论是数据的定时更新、周期性的任务执行&#xff0c;还是特定时间点的操作触发&#xff0c;Python 都为我们提供了强大而灵活的手段来实现这些定时任务。当我们深入探索 Python 的世…

All-in-One WP Migration插件+汉化包+扩展优化版

下载地址&#xff1a;All-in-One WP Migration插件汉化包扩展优化版 此插件支持大量的 WordPress 主机&#xff0c;不用担心网站数据搬家不完全&#xff0c;它使用区块方式导入数据&#xff0c;可避免大多数主机的上传限制&#xff08;还原网站的时候&#xff09;。

C#WPF数字大屏项目实战04--设备运行状态

1、引入Livecharts包 项目中&#xff0c;设备运行状态是用饼状图展示的&#xff0c;因此需要使用livechart控件&#xff0c;该控件提供丰富多彩的图形控件显示效果 窗体使用控件 2、设置饼状图的显示图例 通过<lvc:PieChart.Series>设置环状区域 3、设置饼状图资源样…

Ubuntu系统配置DDNS-GO【笔记】

DDNS-GO 是一个基于 Go 语言的动态 DNS (DDNS) 客户端&#xff0c;用于自动更新你的 IP 地址到 DNS 记录上。这对于经常变更 IP 地址的用户&#xff08;如使用动态 IP 的家庭用户或者小型服务器&#xff09;非常有用。 此文档实验环境为&#xff1a;ubuntu20.04.6。 在Ubuntu…

bison flex 实现tiny语言的编译器

bison flex 实现tiny语言的编译器 项目地址&#xff1a;tiny-compiler 完成了词法分析&#xff0c;语法分析&#xff0c;中间代码生成&#xff0c;虚拟机执行&#xff0c;没有进行类型检查、错误处理和中间代码优化。 词法分析 %{ #include <iostream> #include "…

STM32——hal_SPI_(介绍)

SPI&#xff08;串行外围设备接口&#xff09;是一种高速的、全双工、同步的通信协议&#xff0c;通常用于短距离通信&#xff0c;尤其是在嵌入式系统中与各种外围设备进行通信。SPI接口由摩托罗拉公司推出&#xff0c;由于其简单和灵活的特性&#xff0c;它被广泛用于多种应用…

运行软件缺失vcruntime140.dll怎么办?vcruntime140.dll缺失的详细解决方法分享

vcruntime140.dll 是一个动态链接库文件&#xff0c;它是 Microsoft Visual C Redistributable Package 的一部分&#xff0c;为使用 Visual C 编译器开发的应用程序提供必要的运行时环境。该文件包含了大量应用程序运行时需要调用的库函数&#xff0c;这些函数是实现 C 标准库…

基于GFlowNets的蚁群抽样组合优化

本文将基于GFACS论文&#xff0c;探讨其核心思想、技术细节以及在实际应用中的优势。 GFlowNet&#xff1a;摊销MCMC成本的有效工具 GFACS的核心是GFlowNet&#xff0c;它通过训练学习状态转移的概率分布&#xff0c;从而替代传统的MCMC采样方法。GFlowNet的优势在于&#xff1…

真实场景 这周的任意一天,获取上周一到周日的时间范围-作者:【小可耐教你学影刀RPA】

用户场景 我想在这周的任意一天&#xff0c;获取上周一到周日的时间范围&#xff0c;应该怎么做 解决办法1 用指令解决 最简单 解决办法2 自己写逻辑 不过要用到 获取当前日期指令 当前是礼拜几

在 JavaScript 中实现数据加密与解密:Web Cryptography API 与 CryptoJS详解

在 JavaScript 中&#xff0c;可以使用 Web Cryptography API 或第三方库如 crypto-js 来实现加密和解密。本文将介绍如何使用这两种方法在客户端进行数据的加密和解密。 使用 Web Cryptography API Web Cryptography API 是现代浏览器提供的一个强大、原生的加密 API。它允许…

【AI大模型】Transformers大模型库(二):AutoModelForCausalLM

目录​​​​​​​ 一、引言 二、AutoModelForCausalLM 2.1 概述 2.2 主要功能 2.3 代码示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库&#xff0c;为huggingface上数以万计的预训练大模型提供预测、训练等服务。 &#x1f917; Transfo…

【Web API DOM10】日期(时间)对象

一&#xff1a;实例化 1 获取系统当前时间即创建日期对象 const date new Date() console.log(date) 2024年6月5日周三 2 获取指定的时间 以获取2025年6月29日为例 const date new Date(2025-6-29) console.log(date) 二&#xff1a;日期对象方法 1 使用场景&#xf…

代码随想录算法训练营第二十五天| 216. 组合总和 III、17. 电话号码的字母组合

[LeetCode] 216. 组合总和 III [LeetCode] 216. 组合总和 III 文章解释 [LeetCode] 216. 组合总和 III 视频解释 题目: 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该…

AI视频教程下载:给初学者的ChatGPT提示词技巧

你是否厌倦了花费数小时在可以通过强大的语言模型自动化的琐碎任务上&#xff1f;你是否准备好利用 ChatGPT——世界上最先进的语言模型——并将你的生产力提升到下一个水平&#xff1f; ChatGPT 是语言处理领域的游戏规则改变者&#xff0c;它能够理解并响应自然语言&#xf…

Vue01-vue的简介

一、Vue是什么&#xff1f; 一套用于构建用户界面的渐进式javaScript框架。 构建用户界面&#xff1a; 渐进式&#xff1a; 目前Vue的地位&#xff1a;生态完善&#xff0c;国内前端工程师必备技能。 二、Vue的特点 一个XXX.vue就是一个组件&#xff0c;封装的概念&#xff0c…