当前位置: 首页 > news >正文

搞定python之四----函数、lambda和模块

本文是《搞定python》系列专栏的第四篇,通过代码演示了python自定义函数、lambda和模块的用法。本文学习完成后,python的基础知识就完了。后面会学习面向对象的内容。

1、自定义函数

# 测试python自定义函数# 有参数,没有返回值
def say_hello(name):print("hello: " + name)# 没参数有返回值
def get_age():a = 12a += 1return a# 多个形参,返回一个元组
def get_user_info(name, birthday, sex):return name, birthday, sex    # 也可以返回字典,用 dict1 = {"name":name}.print("---test_function----")
say_hello("张三")age = get_age()
print("age = " + str(get_age()))user_info = get_user_info("李四", '2020-01-01', '女')
print("name=%s, birthday=%s, sex=%s" %(user_info[0], user_info[1], user_info[2]))   #获取元组的元素

这就是自定义函数的应用。最后一个函数,get_user_info()相对比较复杂,咱们在实际中一般也不会这么写,一般直接传一个对象。这里就是为了演示用法而已。下面用可变参数改一下:

# 在定义一个函数,仔细看,最后一个参数名带了一个‘*’,这就是可变参数
def get_user_info3(name, *other_info):return name, other_infoprint("---可变参数测试---")
user_info = get_user_info3("李子")
print("user_info = {%s}" %(user_info[0])  #返回一个元组,因为other_info为空,就不打印了user_info = get_user_info3("李子", "2009-01-01")
print("user_info = {%s, %s}" %(user_info[0], user_info[1][0])) #返回一个元组,other_info是元组里的元组

函数就说这么多了,下面看看lambda的写法。

2、lambda表达式

大家看到了,上面的自定义函数中,就是简单的返回也必须完整的写出函数结构。lambda就是为简化而来的。下面看看写法:

# 测试lambda表达式def func1(a, b):return a + b# 正常就是这么写的,太麻烦了!!!
print("---普通函数调用:----")
print("a + b = %d" %(func1(2, 6)))# -----------------------------------
# lambda的写法
print("\n---lambda写法 1---")
add = lambda a, b: a + b     # 冒号前是定义参数,冒号后是参数运算的表达式  # 1
print("a + b = %d" %(add(2, 6)))# 再简化一下
print("a + b = %d" %((lambda a, b: a+b)(2, 6)))  # 2# 来的别的
print("\n---写个乘法---")
print("a * b = %d" %(lambda a,b:a * b)(2, 5))

总结一下:lambda相对简单,不像java中要是匿名内部类。python中是个简单函数就行,注意==:简单函数==,别太长,太长了就不简单了。

至此,函数的定义和调用就说完了。下面说说模块。

3、模块

模块就相当于你用java写了一个类,别人要怎么用呢?最基本就是把类拷给他,或者打成jar包把jar给他,还能防止修改。python中的模块就是类似的功能。

还是上面的函数,咱们单独写到一个文件中,在另一个python文件中引用。
第一个文件:add.py

# add.py就这两行代码
# 一个公共的模块
def get_user_info(name, birthday, sex):return name, birthday, sex

第二个文件:

# 引入add模块,并调用add的方法
import add    # add是模块的文件名print(add.get_user_info("zhangsan", "2020-02-02", "男"))  #调用add定义的方法

好了,今天就说这么多了。

就到这里啦。

//~~


http://www.mrgr.cn/news/94342.html

相关文章:

  • MAE:Masked Autoencoders Are Scalable Vision Learners——论文学习
  • C++编程指南28 - 使用 std::async() 启动并发任务
  • python多线程和多进程——使用 concurrent.futures.ProcessPoolExecutor 和 ThreadPoolExecutor
  • 解决leetcode第3455题最短匹配子字符串
  • 工具(十二):Java导出MySQL数据库表结构信息到excel
  • 小程序网络大文件缓存方案
  • 用DasViewer的时候3Dtiles 转osgb 可以直接指定目标坐标系吗?
  • 双指针算法专题之——复写零
  • 记录一个SQL自动执行的html页面
  • 求递增子序列LIS的两种方法
  • 深度学习正则化技术之权重衰减法、暂退法(通俗易懂版)
  • LangChain+InternLM2搭建知识库
  • 条款1:理解模版性别推导
  • Kubernetes教程(九)了解卷volume的emptyDir和hostPath
  • 将串口接收到的十六进制数据转为十进制
  • ⭐算法OJ⭐汉明距离【位操作】(C++ 实现)Hamming Distance
  • 【vue + JS】OCR图片识别、文字识别
  • 《基于大数据的营养果蔬推荐系统的设计与实现》开题报告
  • 在 Windows 上快速部署 OpenManus:从安装到运行
  • 计算机网络——DHCP实验