Python 高级教程之函数


# 一个简单的 Python 函数来检查 x 是偶数还是奇数



def evenOdd(x):

	if (x % 2 == 0):

		print("even")

	else:

		print("odd")



# 调用函数的驱动代码

evenOdd(2)

evenOdd(3)



输出


even

odd



参数类型


Python 支持可以在函数调用时传递的各种类型的参数。让我们详细讨论每种类型。

默认参数

默认参数是一个参数,如果在该参数的函数调用中未提供值,则该参数采用默认值。以下示例说明了默认参数。


# 演示默认参数的 Python 程序



def myFun(x, y=50):

	print("x: ", x)

	print("y: ", y)



# 驱动程序代码(我们只用参数调用 myFun())

myFun(10)



输出


('x:', 10) 

('y:', 50)



与 C++ 默认参数一样,函数中的任意数量的参数都可以具有默认值。但是一旦我们有了一个默认参数,它右边的所有参数也必须有默认值。

关键字参数

这个想法是允许调用者使用值指定参数名称,以便调用者不需要记住参数的顺序。


# 演示关键字参数的 Python 程序

def student(firstname, lastname):

	print(firstname, lastname)



# 关键字参数

student(firstname='haiyong', lastname='blog')

student(lastname='blog', firstname='haiyong')



输出


('haiyong', 'blog')

('haiyong', 'blog')



可变长度参数

在 Python 中,我们可以使用特殊符号将可变数量的参数传递给函数。有两个特殊符号:

  • *args(非关键字参数)

  • **kwargs(关键字参数)

示例 1:可变长度非关键字参数


# 用于说明可变数量参数的 *args 的 Python 程序



def myFun(*argv):

	for arg in argv:

		print(arg)



myFun('Hello', 'Welcome', 'to', 'haiyong.site')



输出


Hello

Welcome

to

haiyong.site



示例 2:可变长度关键字参数


# 用于说明可变数量关键字参数的 *kwargs 的 Python 程序



def myFun(**kwargs):

	for key, value in kwargs.items():

		print("%s == %s" % (key, value))



# 驱动程序代码

myFun(first='haiyong', mid='.', last='site')



输出


first == haiyong

mid == .

last == site



文档字符串


函数后面的第一个字符串简称为 Document 字符串或Docstring。这用于描述函数的功能。在函数中使用 docstring 是可选的,但它被认为是一种很好的做法。

以下语法可用于打印出函数的文档字符串:


语法: print(function_name.__doc__)



示例:将 Docstring 添加到函数中


# 一个简单的 Python 函数来检查 x 是偶数还是奇数



def evenOdd(x):

	"""检查数字是偶数还是奇数的功能"""

	

	if (x % 2 == 0):

		print("even")

	else:

		print("odd")



# Driver code to call the function

print(evenOdd.__doc__)



输出


检查数字是偶数还是奇数的功能



return 语句


函数 return 语句用于退出函数并返回到函数调用者,将指定的值或数据项返回给调用者。


语法: return [表达式列表]



return 语句可以包含一个变量、一个表达式或一个在函数执行结束时返回的常量。如果 return 语句不存在上述任何一项,则返回 None 对象。

示例:Python 函数 return 语句


def square_value(num):

	"""此函数返回输入数字的平方值"""

	return num**2



print(square_value(2))

print(square_value(-4))



输出:


4 

16



Python 函数是按引用传递还是按值传递?


需要注意的重要一点是,在 Python 中,每个变量名都是一个引用。当我们将变量传递给函数时,会创建对该对象的新引用。Python中的参数传递与Java中的引用传递相同。

例子:


# 这里 x 是对相同列表 lst 的新引用

def myFun(x):

	x[0] = 20



# 驱动程序代码(注意 lst 在函数调用后被修改)

lst = [10, 11, 12, 13, 14, 15]

myFun(lst)

print(lst)



输出


[20、11、12、13、14、15]



当我们传递一个引用并将接收到的引用更改为其他东西时,传递和接收参数之间的连接就会中断。例如,考虑下面的程序。


def myFun(x):



	# 在下面的 x 与前一个对象的链接被破坏后,一个新对象被分配给 x。

	x = [20, 30, 40]



# 驱动程序代码(注意:函数调用后 lst 不会被修改)

lst = [10, 11, 12, 13, 14, 15]

myFun(lst)

print(lst)



输出


[10、11、12、13、14、15]



另一个例子来证明如果我们分配一个新值(在函数内部),引用链接会被破坏。


def myFun(x):



	# 在下面的 x 与前一个对象的链接被破坏后,一个新对象被分配给 x。

	x = 20



# 驱动程序代码(请注意,函数调用后 lst 不会被修改)

x = 10

myFun(x)

print(x)



输出


10



练习:尝试猜测以下代码的输出。


def swap(x, y):

	temp = x

	x = y

	y = temp



# 驱动程序代码

x = 2

y = 3

swap(x, y)

print(x)

print(y)



输出


2 

3



匿名函数:


在 Python 中,匿名函数意味着函数没有名称。我们已经知道 def 关键字用于定义普通函数,而 lambda 关键字用于创建匿名函数。


# 使用 lambda 函数说明数字立方的 Python 代码



def cube(x): return x*x*x



cube_v2 = lambda x : x*x*x



print(cube(7))

print(cube_v2(7))



输出


343



函数中的 Python 函数


在另一个函数内部定义的函数称为内部函数或嵌套函数。嵌套函数能够访问封闭范围的变量。使用内部函数是为了保护它们免受函数外部发生的所有事情的影响。


# 用于演示访问嵌套函数变量的 Python 程序



def f1():

	s = '我爱中国'

	

	def f2():

		print(s)

		

	f2()



# 驱动程序代码

f1()



输出


我爱中国



🥇 评论区抽粉丝送书啦


💌 欢迎大家在评论区提出意见和建议!(抽两位幸运儿送书,实物图如下)💌

在这里插入图片描述

《自然语言处理NLP从入门到项目实战(Python语言实现)》

【内容简介】

**本书分为12章,主要包括学习人工智能原理、自然语言处理技术、掌握深度学习模型、NLP开源技术实战、Python神经网络计算实战、AI语音合成有声小说实战、玩转词向量、近义词查询系统实战、机器翻译系统实战、文本情感分析系统实战、电话销售语义分析系统实战人工智能辅助写作系统(独家专利技术解密)。

本书内容通俗易懂,案例丰富,实用性强,特别适合使用Python语言人工智能自然语言处理的入门和进阶的读者阅读,也适合产品经理、人工智能研究者等对人工智能自然语言处理感兴趣的读者阅读。另外,本书也适合作为相关培训机构的教材使用。**

也有不想靠抽,想自己买的同学可以参考下面的链接

京东自营购买链接:

### 如何在 IntelliJ IDEA 中配置和使用 Swagger #### 添加 Maven 依赖 为了使 Swagger 能够工作,在 `pom.xml` 文件中需加入特定的依赖项。这可以通过编辑项目的构建文件来完成: ```xml <dependencies> <!-- swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version> </dependency> <!-- swagger ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.8.0</version> </dependency> </dependencies> ``` 这些依赖会引入必要的库用于生成 API 文档以及提供交互式的 UI 页面[^4]。 #### 创建 Swagger 配置类 接着创建一个新的 Java 类用来初始化并配置 Swagger 实例。通常命名为类似于 `SwaggerConfig.java` 的名称,并放置于合适的位置,比如 `config` 包内: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; @Configuration public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .build(); } private ApiInfo apiInfo(){ return new ApiInfoBuilder().title("API文档").description("").termsOfServiceUrl("") .contact(new Contact("", "", "")) .license("").licenseUrl("").version("1.0") .build(); } } ``` 这段代码定义了一个 Spring Bean 来设置 Swagger 的基本信息和其他选项。 #### 启动应用测试 当上述步骤完成后,启动应用程序即可访问默认路径 `/swagger-ui.html` 查看自动生成的 RESTful 接口文档界面。通过浏览器打开该链接可以浏览到所有已暴露出来的 HTTP 请求方法及其参数说明等信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值