细说Python中的函数不同使用方法

       跟大多数程序语言一样,Python也有函数的使用,但是有一点得注意,在Python中,你定义的函数必须写在最前面,不然当计算机识别到你想要调用的函数,它会报错,它会理解为这个语句并没有定义过。因为Python是一种解释型语言,它会从上往下依次运行,所以,

目录

 

1、先看一段 简单的代码

2、接下里就是两个函数之间的调用

3、用函数传递参数

函数传递参数的变式

4、 传递多个参数

5、返回值

6、局部变量与全局变量

7、函数中使用全局变量的值

8、内建函数

9、一个函数也可以返回多个函数值

10、接下来该考虑一下比较综合性的函数


 

1、先看一段 简单的代码

def hello():    #定义函数用def,然后就是函数名,括号加分号一个函数就定义完了
    print('Hello World')    #加缩进,代表函数里面的语句

hello() #调用函数

运行结果

看起来是不是很简单

 

2、接下里就是两个函数之间的调用

def say_hello(): #函数之间的调用
    count_1()#当程序调用 say_hello 这个函数时,运行到这里会调用第二个函数
    print('hello')

def count_1():
    for i in range(1,3):
        print(i)

say_hello() #程序运行到这里就执行第一个定义的函数里的语句
count_1()
say_hello()

运行结果

 

3、用函数传递参数

def grint(name):    #用函数传递参数
    print('Hello,',name)

grint('Gorit')

结果

 

函数传递参数的变式

def greet(name):
    print('Hello,',name)

myname = input('Enter Your Name:')
greet(myname)#获得输入的名字

结果

 

4、 传递多个参数

def sum(a,b):    #我们定义一个求和函数
    print('sum is',a+b)

x = int(input('输入你的第一个数字:'))
y = int(input('输入你的第二个数字:'))

sum(x,y)

结果

 

我们在传递参数的时候,还可以传递默认参数

def greet(name ='Unknown name!'):#这里我们就给程序设置了一个默认参数
    print('Hello,',name)

greet('Gorit')
greet()

结果相比大家也猜得到了

 

5、返回值

Python中也有返回值,和C语言一样是 return

我们来看看具体实例

def add(x,y):
    z = x + y
    return z #返回值为两个数字之和的结果

a = int(input('输入第一个数字:'))
b = int(input('输入第二个数字:'))

sum = add(a,b)    #将返回值保存在sum这个变量中
print('The sum is',sum)

结果

这个程序和之前的两数之和的程序比起来更加规范 

 

6、局部变量与全局变量

学了函数,就得讲一讲局部变量与全局变量了,我们还是以一个例子为载体进行分析

def c():
    x = 222 #局部变量

x = 1 #全局变量

print(x)
c()
print(x)

先猜一猜,我们后面调用了 c 这个函数,后面输出得 x 是不是也变了呢?

 结果

 然而结果和我们想得并不一样,这是我们就要考虑全局变量局部变量

当我们调用函数时,系统创建了局部变量的值,但是局部变量与全局变量是分开的,也就是说局部变量值在函数内部猜有效果,到了函数

外面就没有功能了,而全局变量是贯穿整个程序的,所以我们会常常把全局变量的值代入局部变量中进一些运算,因此区别外变量与全局

变量的目的是为了保证代码的模块化

 对全局变量局部变量的另一种解释:只能作用单一函数中的变量称为局部变量,而可以在任何地方使用(和更新)的变量称为全局变量

还有一点:如果主程序里调用函数里的函数值,程序会报错 

就像这个例子

编辑器都告诉你这样是错误的 

 

7、函数中使用全局变量的值

这里我们需要用到 global函数

def sss():
    global x #使用global即可以使用全局变量的值
    x = 800

x = 33

print(x)
sss()
print(x)

程序运行的结果

解释:程序第二行“global x”。这是告诉Python,函数中sh使用的“x”变量应该是其他位置创建的全局变量,而不是一个局部变量。所以程序第一行打印的是33,此后调用 函数sss,此时更行第四行中全局变量的值,再打印x的值时,为800

 

8、内建函数

内建函数要用到 “exec ”函数,最终的结果时再一个程序中运行另一个程序,听起来挺拗口的,我们看看下面这个实例

 

#exec——在一个程序中运行另一个程序,也就说你可以在这个程序中使用其他的语句,例如print
code = ''#我们先创建一个名为code 的变量
x = 1

while code!='exit':
    code = input('Enter some code:')

    exec(code)
    x+= 1

程序运行结果

 

9、一个函数也可以返回多个函数值

当我们写的程序愈来愈复杂,你可能也会写很多函数用来接收或者返回大量的数据,因此让函数返回多组数据的最简方法就是用逗号分隔他们。

 下面就来看看这个程序

def func():
    return 111,222

x,y = func()
print(x,y)

 程序的运行结果

 从程序中我们可以看到其实一个函数是可以有多个返回值的,只要有足够的变量去存储即可

 PS:但是如果返回值过多,我们又没有好记得变量名来存储它,这个时候就可以用元组来大显身手了,可以看看下面这个程序

 

def my_func():
    return (11,22,33,44,55,66)

mytuple = my_func()
print(mytuple[0])
print(mytuple[1])
print(mytuple[2])

 程序运行结果

 问题详解看细说Python数据结构——(元组) Q7

 但是有一点值得提醒,元组的值是不可改变的,如果要改变的话,可以把返回值再存储到列表中

 如果要返回列表的话,我们需要将返回值中的小括号改成方括号即可

 

 10、接下来该考虑一下比较综合性的函数

我们就考虑做一个求平均值的函数,调用函数的代码有时候只用传入少许的参数,但是有的时候却要传入多组数据,我们可以使用任意参数长度标记——星号(*),我们就可以编写接收不同参数数量的函数,下面是一个实例

 

def average(*numbers): # * 的作用是将数据变成一个元组存放
    result = sum(numbers)*1.0/len(numbers) #sum 为求和函数,len为求元组长度函数
    return result

x = average(3,4,5,2,1,6,8,3,2)
print(x)

x = average(1,2,3,4,5,5,6,7)
print(x)

程序的运行结果

 

PS:但是这些值都是已经定义好的,我们能否自己直接以参数的形式发送  元组或者列表,这样我们就得再次使用 *,这次我们是在调用代码的时候使用,看这个程序

def average(*numbers): # * 的作用是将数据变成一个元组存放
    result = sum(numbers)*1.0/len(numbers)
    return result

mytuple = (1,2,3,4,5)
x = average(*mytuple)
print(x)

mylist = [1,2,3,4,5,6]
x = average(*mylist)
print(x)

 运行结果:

 

这两个调用函数的过程可以理解为“拆分”,“拆分” 就是将列表 或者 元组中的元素拿出来,然后再放入函数中的名为numbers元组当中 ,然后再进行平均数的运算

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python requests库的find()和find_all()函数用于在HTML文档查找特定的标签或其它元素,并返回这些元素的信息。它们都是BeautifulSoup库函数,需要导入BeautifulSoup库才能使用。 find()函数用于查找HTML文档第一个匹配的元素。其语法为: ``` find(name, attrs, recursive, text, **kwargs) ``` 其,name参数指定要查找的标签名,attrs参数指定要查找的标签属性,recursive参数指定是否递归查找子元素,text参数指定要查找的文本内容,**kwargs参数指定其它属性和值。 例如,以下代码用于查找一个HTML文档第一个div标签的内容: ``` import requests from bs4 import BeautifulSoup response = requests.get('http://example.com') soup = BeautifulSoup(response.text, 'html.parser') div = soup.find('div') print(div.text) ``` find_all()函数用于查找HTML文档所有匹配的元素。其语法为: ``` find_all(name, attrs, recursive, text, limit, **kwargs) ``` 其,limit参数指定最多返回的元素数量。 例如,以下代码用于查找一个HTML文档所有a标签的链接: ``` import requests from bs4 import BeautifulSoup response = requests.get('http://example.com') soup = BeautifulSoup(response.text, 'html.parser') links = soup.find_all('a') for link in links: print(link.get('href')) ``` 区别: find()函数只返回第一个匹配的元素,而find_all()函数返回所有匹配的元素。 find()函数可省略name参数,这样将返回整个HTML文档的内容。而find_all()函数必须指定要查找的元素名。 find_all()函数可以使用limit参数限制返回元素的数量,而find()函数不支持这个参数。 find()函数返回的是一个元素对象,可以直接使用元素对象的属性和方法,例如text、get()等。而find_all()函数返回的是一个元素列表,需要使用循环遍历列表来获取每个元素的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值