首页 > 编程语言 >python篇:0基础带你入门python之函数篇

python篇:0基础带你入门python之函数篇

时间:2024-11-08 19:46:20浏览次数:3  
标签:入门 python print 参数 fun out def 函数

所谓函数就是将一批代码进行打包封装,便于之后使用

比如

def my_fun():
    print("我爱你")

my_fun()

这样在任何地方使用my_fun()即可马上输出“我爱你”,

一、初入函数 

不仅如此,函数分为有参函数和无参函数,有返回函数和无返回函数,总共四个

  • 有参有返回函数
  • 有参无返回函数
  • 无参有返回函数
  • 无参无返回函数

 我上方的就是无参无返回函数,参数就是在my_fun()括号中有无参数,

返回数就是函数中是否有return

# 有参有返回函数
def my_fun(n):
    return n

n = "我爱你"
print(my_fun(n))

# 有参无返回函数
def my_fun(n):
    print(n)

n = "我爱你"
my_fun(n)

# 无参有返回函数
def my_fun():
    return "我爱你"

print(my_fun())

# 无参无返回函数
def my_fun():
    print("我爱你")

my_fun()

二、函数参数

 1.参数调整

 关键字参数,顺序可以任意调整

"""
关键字参数,顺序可以任意调整
"""
def fun(name, age, sex):
    print(name, age, sex)

fun(name='张三', age='18', sex='男')
fun(age=18, sex='男', name='张三')

2.参数替换

 可以在函数中提前设置参数,也可以在函数外替换参数

"""
参数替换
"""
def fun(name='张三', age=18, sex='男'):
    print(name, age, sex)

fun()
fun('李四')
fun(age = 666)
fun('男',18,'小明')
fun('小华')

3.不定长参数 

参数不是定长的,在参数前加入“*”,即可将参数改成不定长,而且会将num改成元组格式 

"""
位置的不定长参数
"""
def text(*num, a, b):
    print(num)
    print(a)
    print(b)

text(1,2,3,4,5, a = 5, b = 5)

def text(num, a, *b):
    print(num)
    print(a)
    print(b)

text(1,2,3,4,5, )

 既然是元组,当然可以解包啦

"""
函数解包元组
"""
def fun1(*num):
    my_sum = 0
    even_sum = 0
    odd_sum = 0
    for i in num:
        my_sum += 1
        if i % 2 == 0:
            even_sum += 1
        else :
            odd_sum += 1
    return my_sum, even_sum, odd_sum

res =fun1(2, 6, 7, 8, 11, 10)
print(res, type(res))

a, b, c = fun1(2, 6, 7, 8, 11, 10)
print(a, b, c)

当然,不仅可以改成元组,还可以改成字典,只需要改成“**”两个就可以了

"""
打包成字典
"""
def fun(**kwargs):
    print(kwargs)

fun(a = 12, b = 13, c = 14)
fun(小明=12)
fun(小明=)

 小例题如下

"""
定义函数,参数为关键字可变长参数,请将其中HuaHua的身高修改为160,
然后打印出所有身高不足180的姓名,
使用fun(XiaoMing=155,XiaoHong=171,XiaoHei=192,HuaHua=2333)调用测试
"""
def fun(**height):
    if 'HuaHua' in height:
        height['HuaHua'] = 160

    print([name for name,height_n in height.items() if height_n <= 180])

fun(XiaoMing=155,XiaoHong=171,XiaoHei=192,HuaHua=2333)


"""
定义函数,参数为关键字可变长参数,请计算他们的平均身高,
使用fun7(xiaoming=’178cm’,xiaobai=’182cm’,xiaohong=’166cm’,xiaohei=’174cm’)
"""
def fun7(**k):
    heights = 0
    for height in k.values():
        heights += int(height.split('cm')[0])

    return heights/len(k)

res = fun7(xiaoming='178cm', xiaobai ='182cm', xiaohong ='166cm', xiaohei ='174cm')
print(res)

 三、函数嵌套

1.函数参数作用域 

         讲函数前要先讲清函数的参数作用区域

"""
函数外和函数内的参数不通
"""
def fun1():
    a = 10
    print(a)

def fun2():
    print(f"fun1函数{a}")

fun1()
# fun2() # 此函数会报错

 在函数1中定义的参数a , 不会被函数2识别,因为当函数结束时,函数内定义的参数会被删除,无法被函数外识别,这就是全局变量和局部变量的区别

 当然如果一定要函数fun2识别到fun1中的参数a,也可以利用global方法

def fun1():
    global a
    a = 10
    print(a)

def fun2():
    print(f"fun1函数{a}")

fun1()
fun2() # 函数运行成功

2.函数嵌套 

 函数中能当然能定义新的函数啦,并且分为三种

  1.  直接调用
  2. 返回调用
  3. 返回方法名调用
"""
在外函数调用内函数
"""
# 1.直接调用
def out_fun():
    print("外函数")
    def in_fun():
        print("内函数")
    in_fun()

out_fun()

# 2.返回调用
def out_fun():
    print("外函数")
    def in_fun():
        print("内函数")
    return in_fun()

out_fun()

# 3.返回函数名调用
def out_fun():
    print("外函数")
    def in_fun():
        print("内函数")
    return in_fun

out_fun()()

 返回函数名调用最抽象,返回值居然是函数名,然后加上多余出来的()可以调用内函数 

再配合有无参有无返回的嵌套 

"""
函数闭包
"""
# out 有参数有返回值。 in 有参数有返回值
def out_fun(x):
    def in_fun(y):
        return y ** x
    return in_fun

print(out_fun(2)(3))

# out无参数有返回函数,in无参数有返回函数
def out_fun():
    x = 100
    def in_fun():
        return x + 666
    return in_fun

print(out_fun()())

# out无参数有返回函数,in无参数有返回函数
def out_fun():
    x = 100
    def in_fun():
        return x + 666
    return in_fun()

print(out_fun())

 当然,还可以和global一起使用

"""
global全局函数的使用
"""
x = 100
def out_fun():
    # global x
    x = 200
    def in_fun():
        # global x
        x = 300
        print(f"内涵数中输出{x}")
    in_fun()
    print(f"外函数输出{x}")

out_fun()
print(f"函数外输出{x}")

除了global外还有一个nonlocal 

  •  global关键字用于声明一个变量是全局变量,即在函数之外定义的变量。
  • nonlocal 关键字用于在嵌套函数中声明一个变量是非局部变量,但它不属于全局作用域,而是属于外层的嵌套函数作用域。
"""
nonlocal函数参数绑定外一层
"""
def out_fun():
    x = 666
    def in_fun():
        # nonlocal x
        x = 100
        print(f"内函数里面的{x}")
    in_fun()
    print(f"外函数里面的{x}")

out_fun()

标签:入门,python,print,参数,fun,out,def,函数
From: https://blog.csdn.net/qq_63627943/article/details/143633054

相关文章

  • C++——求a!+b!+c!的值,用一个函数fac(n)求n!。a,b,c的值由主函数输入,最终得到的值在主
    没注释的源代码#include<iostream>usingnamespacestd;intfun(intn);intmain(){   inta,b,c,sum;   cout<<"pleaseinputa,b,c:";   cin>>a>>b>>c;   sum=fun(a)+fun(b)+fun(c);   cout<<"a!+b!+c!="......
  • C++ 函数对象、函数指针与Lambda表达式
    C++函数对象、函数指针与Lambda表达式函数指针函数指针(FunctionPointer)是指向函数的指针变量。它可以存储函数的地址,并通过该指针变量来调用该函数。函数指针的声明使用指针符号,指向的类型为函数的返回类型和参数列表,如int(funcPtr)(int,int);。函数指针的值可以指向相同......
  • SQL语法与SQL注入漏洞の入门(第三周)
    基础知识一、SQL语言 •定义:  •SQL是结构化查询语言(StructuredQueryLanguage)的简称,是一种在关系型数据库中定义和操纵数据的标准语言。 •特点: •非过程化语言,没有分支、循环结构,通过几个命令动词就可以实现对数据库以及数据的查询和管理。 •统一的语......
  • 快速入门Zookeeper
    ZookeeperZooKeeper作为一个强大的开源分布式协调服务,扮演着分布式系统中至关重要的角色。它提供了一个中心化的服务,用于维护配置信息、命名、提供分布式同步以及提供组服务等。通过其高性能和可靠的特性,ZooKeeper能够确保在复杂的分布式环境中,各个节点和服务之间的协调和......
  • 「Mac玩转仓颉内测版1」入门篇1 - Cangjie环境的搭建
    本篇详细介绍在Mac系统上快速搭建Cangjie开发环境的步骤,涵盖VSCode的下载与安装、Cangjie插件的离线安装、工具链的配置及验证。通过这些步骤,确保开发环境配置完成,为Cangjie项目开发提供稳定的基础支持。关键词Cangjie开发环境搭建VSCode安装指南Cangjie插件离线安装MacC......
  • python+flask计算机毕业设计共享充电柜系统WEB管理平台的设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景随着电动交通工具的普及,充电需求日益增长,共享充电柜作为一种新兴的充电解决方案应运而生。关于共享充电设施的研究,现有研究主要以共享......
  • python+flask计算机毕业设计隔离点管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于隔离点管理的研究,现有研究主要以宏观的防疫策略和部分管理环节为主,专门针对隔离点全面管理系统的研究较少。在国内外疫情防控期间......
  • _python之字符类型
    一、索引索引在公司中一般也叫下标,或角标定义:可我们可以直接使用索引来访问序列中的元素,同时索引可分为正向索引和负向索引两种,而切片也会用到索引,如下图:二、切片定义:切片是指对操作的对象截取其中一部分的操作,字符串,列表,元组都支持切片操作切片的语法:【开始索引:结束索引:步......
  • 基于Python的在线自主考试系统开发与设计
    目录摘要IIAbstractIII1系统概述11.1研究背景11.2研究现状21.3研究的意义21.4Python技术21.5MySQL数据库32需求分析42.1可行性分析42.1.1技术可行性42.1.2经济可行性42.1.3操作可行性42.1.4发展可行性52.2系统流程分析52.2.1......
  • python 2.x 模拟桩
    用python(2.*)写一个简单的模拟桩并且打印出请求头和消息体,便于调试接口,看看请求头和body是否符合要求vimockServer.pyfromBaseHTTPServerimportBaseHTTPRequestHandler,HTTPServerclassSimpleHTTPRequestHandler(BaseHTTPRequestHandler):defdo_GET(self):......