首页 > 编程语言 >Python 10 函数

Python 10 函数

时间:2022-11-29 10:01:04浏览次数:36  
标签:10 函数 Python h1 h2 参数 print calc

函数

创建

image-20221128141102525

例:【下面的一定要看懂】

# 作者:咸瑜
# 代码时间:2022年11月28日

def calc(a, b):
    return a + b


# 传参方式 1 [自动"位置"传参]
res = calc(1, 9)
print(res)
print(calc(1, 9))

# 传参方式 2 [参数名传参]
res = calc(a=11, b=22)
print(res)

# 传参方式 3 [手动“位置”传参]
params = [1, 2]
print(calc(*params))  # 1 + 2 = 3

# 传参方式 4 [手动“关键字”传参]
params = {"a": 2, "b": 2}
print(calc(**params))  # 2 + 2 = 4

传参内存分析

# 作者:咸瑜
# 代码时间:2022年11月28日

def fun(s1, s2):
    print("函数内:s1:", s1)
    print("函数内:s2:", s2)
    s1 = 10086
    s2.append(110)
    print("计算后-函数内:s1:", s1)
    print("计算后-函数内:s2:", s2)


h1 = 10
h2 = [20, 30, 40]
print("h1:", h1)
print("h2:", h2)
fun(h1, h2)
print("调用函数后 h1:", h1)
print("调用函数后 h2:", h2)

# 结果:
# h1: 10
# h2: [20, 30, 40]
# 函数内:s1: 10
# 函数内:s2: [20, 30, 40]
# 计算后-函数内:s1: 10086
# 计算后-函数内:s2: [20, 30, 40, 110]
# 调用函数后 h1: 10
# 调用函数后 h2: [20, 30, 40, 110]

可以看出 其实和Java/C等语言差不多,就是传值还是传址的关系了。

官方点:

如果是不可变对象,那么在函数体内修改不会影响到实参的值。

如果是可变对象,那么在函数体内修改会影响到实参的值。

返回值

挺神奇的啊 ,可以返回多个返回值,用逗号隔开即可。

def res():
    return "参数1", "参数2"


print(res())  # ('参数1', '参数2')

注意:

​ 没有函数返回值那么就 省略不写

​ 如果函数返回值只有1个 直接返回原值

​ 如果函数返回值只有多个 返回元祖

例子就不写了,都是有基础的人了。我也懒得写。【原谅我好吧...】

默认参数值

其实就是在函数定义的时候,就写好参数值,然后调用的时候如果存在值,那么就替换掉了:

注意有个很神经病的现象,就是如果你给第一个形参赋了默认值,那么第二个形参一定要默认值,不然报错

def calc(a, b=100):
    return a + b


print(calc(2))  # 102

神经现象[错误写法]:

def calc(a = 1, b):
    return a + b

函数的参数定义

  1. 个数可变的位置参数【用* 定义、结果是元祖】
  2. 个数可变的关键字形参【用 ** 定义 、结果是字典】
def param_test(param1, default2=0, *args3, **keyword4):
    print('必选参数为:', param1)
    print('默认参数为:', default2)
    print('可选参数为:', args3)
    print('关键字参数为:', keyword4)


param_test(1, 2, 3, 4, p1=5, p2=6)

# 必选参数为: 1
# 默认参数为: 2
# 可选参数为: (3, 4)
# 关键字参数为: {'p1': 5, 'p2': 6}

例子可以清清楚楚明明白白,但是:

  1. 个数可变的位置参数 和 个数可变的关键字形参 只能存在一个

函数参数小总结

image-20221129091506489

变量

作用域

image-20221129092437769

没什么好说的,看例子就完了:

# 作者:咸瑜
# 代码时间:2022年11月29日

name = "咸瑜老师"


def test():
    print(name)
    c = "test函数可调用的变量"  # 只能在test上调用了。是个局部变量
    # 错误: global globalVar = "全局变量" # 在定义全局变量的时候,不能赋值
    global globalVar
    globalVar = "全局变量"


test()  # 咸瑜老师 证明:name的作用域穿透了函数test
print(globalVar) # 全局变量 证明:全局变量本页面中哪里都能使用。

递归函数

image-20221129093939905

斐波那契数(递归实现):

# 作者:咸瑜
# 代码时间:2022年11月29日

name = "咸瑜老师"


# 1  1  2  3  5  8  13  21  34  55
def fbnqs(n):
    if n == 1:
        return 1
    elif n == 2:
        return 1
    else:
        return fbnqs(n - 1) + fbnqs(n - 2)


# 打印 1-66 的 斐波那契数
for i in range(1, 66):
    print(fbnqs(i))

标签:10,函数,Python,h1,h2,参数,print,calc
From: https://www.cnblogs.com/bi-hu/p/16934545.html

相关文章

  • python接口自动化43- 使用代理proxies 发送请求
    前言如何在requests模块中使用代理发送请求requests使用代理在requests模块中使用代理示例#作者-上海悠悠微信/QQ交流:283340479#blog地址https://www.cnblogs......
  • win10 你需要trustedinstaller的权限才能修改
    win10你需要trustedinstaller的权限才能修改 选择一个文件或目录,右击属性,选择安全。 选择高级 选择更改。选择当前登陆用户或管理员,同时选择最左下角》使用......
  • Acwing100 增减序列
    给定一个长度为n的数列每次可以选择一个区间 使每个数都加一或者都减一。 求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到......
  • python学习之基础内容
    安装包下载:https://www.python.org/downloads/,可以根据自己系统选择window版本和linux版本。查询python版本使用:python--version,windows和linux命令一样Pippip是Py......
  • 多版本 Python 使用 pip 安装 package 问题
    最简单的方式使用参数指定安装路径:pipinstall-tD:\python3.5(32bit)\Lib\site-packagesnumpy叨叨叨如果电脑上安装了多个版本的Python的话,在需要使用pip安装新pac......
  • 限行列和随机加墙版_过程拆解为若干函数
    PublicnRowsAsLong,nColsAsLong,nLastRowAsLong,tmpSumAsLong,tmpRowAsLong,rAsLong,cAsLongPublicsumRows()AsLong,nRowSkipSum()AsLong,n......
  • Python资料1
    Python资料 Python入门基础教程(非常详细) 原创20Python是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,坚持「极简主义」。Python类库(模块)极其丰富,......
  • php 农历公历转换函数
    classlunar{#农历每月的天数var$everyCMonth=array(0=>array(8,0,0,0,0,0,0,0,0,0,0,0,29,30,7,1),1=>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,8,2),2=>arr......
  • WIN10计算器-关于十六进制
      1.HEX代表十六进制2.DEC代表十进制3.OCT代表八进制4.BIN代表二进制   ......
  • python从公众号文章中获取二维码
    在做一个公众号采集的项目中,客户有个要求,想把二维码的url保存到数据库中,如图。原本以为要各种骚操作各种逆向才能获取得到,没想到竟然很简单。第一步观察二维码url的规......