自学入门不在困难,初学者挑战学习Python编程30天 (三)

这篇博客是Python初学者30天学习计划的第11-19天内容概要,涵盖了函数的定义、调用、参数使用,模块的创建、导入和使用,列表推导式,以及异常处理和文件操作。博客详细解释了不同类型的函数,包括无参数函数、带参数和返回值的函数,以及带默认参数和任意数量参数的函数。此外,还介绍了模块如操作系统模块、统计模块、数学模块和字符串模块的使用。接着,博主分享了列表理解、lambda函数和高阶函数,如map、filter和reduce。在异常处理部分,讲解了Python中常见的错误类型和如何优雅地处理错误。最后,博客提到了日期时间处理和正则表达式的应用,以及文件的读写操作。
摘要由CSDN通过智能技术生成

在这里插入图片描述坚持坚持再坚持!!!
如果文章对于你有帮助,欢迎收藏、关注、点赞与订阅专栏
有任何疑问欢迎私信

目录

第 11 天 - 函数

到目前为止,我们已经看到了许多内置的 Python 函数。今天,我们将重点介绍自定义函数。什么是函数?在开始制作函数之前,让我们先了解一下什么是函数以及为什么需要它们?

定义函数

函数是设计用于执行特定任务的可重用代码块或编程语句。为了定义或声明一个函数,Python 提供了def关键字。以下是定义函数的语法。只有在调用或调用函数时才执行代码的功能块。

声明和调用函数

当我们创建一个函数时,我们称之为声明一个函数。当我们开始使用它时,我们称它为调用或调用一个函数。函数可以带参数或不带参数声明。

# 语法
# 声明函数
def  function_name ():
    代码
    代码
# 调用函数
function_name ()

无参数函数

函数可以不带参数声明。

例子:

def  generate_full_name ():
     first_name  =  'Asabeneh' 
    last_name  =  'Yetayeh' 
    space  =  '' 
    full_name  =  first_name  +  space  +  last_name 
    print ( full_name )
 generate_full_name () #调用一个函数

def  add_two_numbers ():
     num_one  =  2 
    num_two  =  3 
    total  =  num_one  +  num_two 
    print ( total )
 add_two_numbers ()

返回值的函数 - 第 1 部分

函数也可以返回值,如果函数没有return语句,则函数的值为None。让我们使用 return 重写上述函数。从现在开始,当我们调用函数并打印它时,我们会从函数中获取一个值。

def  generate_full_name ():
     first_name  =  'Asabeneh' 
    last_name  =  'Yetayeh' 
    space  =  '' 
    full_name  =  first_name  +  space  +  last_name 
    return  full_name 
print ( generate_full_name ())

def  add_two_numbers ():
     num_one  =  2 
    num_two  =  3 
    total  =  num_one  +  num_two
    返回 总
打印( add_two_numbers () )

带参数的函数

在函数中,我们可以传递不同的数据类型(数字、字符串、布尔值、列表、元组、字典或集合)作为参数

  • 单参数:如果我们的函数接受一个参数,我们应该用一个参数调用我们的函数
 # 语法
  # 声明一个函数
  def  function_name ( parameter ):
    代码
    代码
  # 调用函数
  print ( function_name ( argument ))

例子:

def  greetings ( name ):
     message  =  name  +  ', 欢迎来到 Python for Everyone!' 
    返回 消息

打印(问候('Asabeneh'))

def  add_ten ( num ):=  10
    返回 num  + 十
打印( add_ten ( 90 ))

def  square_number ( x ):
     return  x  *  x 
print ( square_number ( 2 ) )

def  area_of_circle ( r ):
     PI  =  3.14 
    area  =  PI  *  r  **  2 
    return  area 
print ( area_of_circle ( 10 ) )

def  sum_of_numbers ( n ):
     total  =  0 
    for  i  in  range ( n + 1 ):
         total += i 
    print ( total )
 print ( sum_of_numbers ( 10 )) # 55 
print ( sum_of_numbers ( 100 )) # 5050
  • 两个参数:一个函数可能有也可能没有一个或多个参数。一个函数也可以有两个或多个参数。如果我们的函数接受参数,我们应该使用参数调用它。让我们检查一个带有两个参数的函数:
  # 语法
  # 声明一个函数
  def  function_name ( para1 , para2 ):
    代码
    代码
  # 调用函数
  print ( function_name ( arg1 , arg2 ))

例子:

def  generate_full_name ( first_name , last_name ):
     space  =  ' ' 
      full_name  =  first_name  +  space  +  last_name 
      return  full_name 
print ( 'Full Name: ' , generate_full_name ( 'Asabeneh' , 'Yetayeh' ))

def  sum_two_numbers ( num_one , num_two ):
     sum  =  num_one  +  num_two 
    return  sum 
print ( '两个数字的和:' , sum_two_numbers ( 1 , 9 ))

高清 calculate_age(CURRENT_YEAR,birth_year):
    年龄 =  CURRENT_YEAR  -  birth_year
    回报 年龄;

打印('年龄:',计算年龄(2021年,1819年))

DEF  weight_of_object(质量,重心):
    重量 =  STR(质量 * 重力)+  “N”  #的值必须改变到一个字符串第一
    返回 重量
打印(“的物体的重量以牛顿:”,weight_of_object(1009.81 ))

使用键和值传递参数

如果我们使用键和值传递参数,则参数的顺序无关紧要。

# 语法
# 声明一个函数
def  function_name ( para1 , para2 ):
    代码
    代码
# 调用函数
print ( function_name ( para1  =  'John' , para2  =  'Doe' )) # 这里参数的顺序无关紧要

例子:

def  print_fullname ( firstname , lastname ):
     space  =  ' ' 
    full_name  =  firstname   +  space  +  lastname 
    print ( full_name )
 print ( print_fullname ( firstname  =  'Asabeneh' , lastname  =  'Yetayeh' ))

def  add_two_numbers ( num1 , num2 ):
     total  =  num1  +  num2 
    print ( total )
 print ( add_two_numbers ( num2  =  3 , num1  =  2 )) # 顺序无所谓

返回值的函数 - 第 2 部分

如果我们不使用函数返回值,那么我们的函数默认返回None。要使用函数返回值,我们使用关键字return后跟我们要返回的变量。我们可以从函数返回任何类型的数据类型。

  • 返回字符串:

示例:

def  print_name ( firstname ):
     return  firstname 
print_name ( 'Asabeneh' ) # Asabeneh

def  print_full_name ( firstname , lastname ):
     space  =  ' ' 
    full_name  =  firstname   +  space  +  lastname 
    return  full_name 
print_full_name ( firstname = 'Asabeneh' , lastname = 'Yetayeh' )
  • 返回一个数字:

例子:

def  add_two_numbers ( num1 , num2 ):
     total  =  num1  +  num2 
    return  total 
print ( add_two_numbers ( 2 , 3 ))

高清 calculate_age(CURRENT_YEAR,birth_year):
    年龄 =  CURRENT_YEAR  -  birth_year
    回报 年龄;
打印('年龄:',计算年龄(2019年,1819年))
  • 返回一个布尔值:
    示例:
def  is_even ( n ):
     if  n  %  2  ==  0 :
         print ( 'even' )
         return  True     # return 停止函数的进一步执行,类似于 break 
    return  False 
print ( is_even ( 10 )) # True 
print ( is_even ( 7 ) )) # 错误
  • 返回列表:

示例:

DEF  find_even_numbers(Ñ):
    找齐 = []
    为 我 在 范围(Ñ  +  1):
        如果 我 % 2  ==  0:
            找齐。追加(我)
    返回 找齐
打印(find_even_numbers(10))

带默认参数的函数

有时我们在调用函数时将默认值传递给参数。如果我们在调用函数时不传递参数,将使用它们的默认值。

# 语法
# 声明一个函数
def  function_name ( param  =  value ):
    代码
    代码
# 调用函数
function_name ()
 function_name ( arg )

例子:

def  greetings ( name  =  'Peter' ):
     message  =  name  +  ',欢迎大家使用 Python!
    返回 消息
打印(问候())
打印(问候('Asabeneh'))

def  generate_full_name ( first_name  =  'Asabeneh' , last_name  =  'Yetayeh' ):
     space  =  ' ' 
    full_name  =  first_name  +  space  +  last_name 
    return  full_name

打印(生成全名())
打印(生成全名('大卫''史密斯'))

DEF  calculate_age(birth_year,CURRENT_YEAR  =  2021):
    年龄 =  CURRENT_YEAR  -  birth_year
    返回 年龄;
打印('年龄:',计算年龄(1821))

DEF  weight_of_object(质量,重心 =  9.81):
    重量 =  STR(质量 * 重力)+  “N”  #的值必须改变到字符串第一
    返回 重量
打印(“牛顿的物体的重量:”,weight_of_object(100) # 9.81 - 地球表面的平均重力
打印( '以牛顿为单位的物体重量:' , weight_of_object ( 100 , 1.62 ))# 月球表面的重力

任意数量的参数

如果我们不知道传递给函数的参数数量,我们可以通过在参数名称前添加 * 来创建一个可以接受任意数量参数的函数。

# 语法
# 声明一个函数
def  function_name ( * args ):
    代码
    代码
# 调用函数
function_name ( param1 , param2 , param3 ,..)

例子:

def  sum_all_nums ( * nums ):
     total  =  0 
    for  num  in  nums :
         total  +=  num      # 同total = total + num 
    return  total 
print ( sum_all_nums ( 2 , 3 , 5 )) # 10

函数中的默认参数和任意数量的参数

def  generate_groups ( team , * args ):
     print ( team )
     for  i  in  args :
         print ( i )
 print ( generate_groups ( 'Team-1' , 'Asabeneh' , 'Brook' , 'David' , 'Eyob' ))

函数作为另一个函数的参数

#您可以将函数作为参数传递
def  square_number ( n ):
     return  n  *  n 
def  do_something ( f , x ):
     return  f ( x )
 print ( do_something ( square_number , 3 )) # 27

到目前为止,您取得了很多成就。继续!您刚刚完成了第 11 天的挑战,距离通往伟大之路还有 11 步。

第 12 天 - 模块

什么是模块

模块是包含一组代码或一组可以包含在应用程序中的功能的文件。模块可以是包含单个变量、函数或大型代码库的文件。

创建模块

为了创建一个模块,我们在 python 脚本中编写代码并将其保存为 .py 文件。在项目文件夹中创建一个名为 mymodule.py 的文件。让我们在这个文件中写一些代码。

# mymodule.py 文件
def  generate_full_name ( firstname , lastname ):
     return  firstname  +  ' '  +  lastname

在您的项目目录中创建 main.py 文件并导入 mymodule.py 文件。

导入模块

要导入文件,我们仅使用import关键字和文件名。

# main.py 文件
import  mymodule 
print ( mymodule . generate_full_name ( 'Asabeneh' , 'Yetayeh' )) # Asabeneh Yetayeh

从模块导入函数

我们可以在一个文件中包含多个函数,并且可以以不同的方式导入所有函数。

# main.py 文件
from  mymodule  import  generate_full_name , sum_two_nums , person ,重力
打印( generate_full_name ( 'Asabneh' , 'Yetayeh' ))
 print ( sum_two_nums ( 1 , 9 ))
 mass  =  100 ;
重量 = 质量 * 重力
打印(重量)
打印(人[ '名字' ]

从模块导入函数并重命名

在导入过程中,我们可以重命名模块的名称。

#main.py文件
从 MyModule的 进口 generate_full_name 如 全名,sum_two_nums 作为 总,人 作为 p,重力 为 克
打印(全名('Asabneh''Yetayeh' ))
打印(总共(19))
的质量 =  100 ;
重量 = 质量 *  g
打印(重量)
打印(p )
打印( p [ 'firstname' ])

导入内置模块

像其他编程语言一样,我们也可以通过使用关键字import 导入文件/函数来导入模块。让我们导入我们将大部分时间使用的公共模块。一些常见的内置模块:math、datetime、os、sys、random、statistics、collections、json、re

操作系统模块

使用 python os模块可以自动执行许多操作系统任务。Python 中的 OS 模块提供创建、更改当前工作目录、删除目录(文件夹)、获取其内容、更改和识别当前目录的功能。

# 导入模块
import  os 
# 创建目录
os . mkdir ( 'directory_name' )
 # 改变当前目录
os . chdir ( 'path' )
 # 获取当前工作目录
os . getcwd ()
 # 删除目录
os . 目录()

系统模块

sys 模块提供用于操作 Python 运行时环境的不同部分的函数和变量。函数 sys.argv 返回传递给 Python 脚本的命令行参数列表。此列表中索引 0 处的项目始终是脚本的名称,索引 1 处是从命令行传递的参数。

script.py 文件示例:

import  sys 
#print(sys.argv[0], argv[1],sys.argv[2]) # 这行会打印出: filename argument1 argument2 
print ( 'Welcome {}. Enjoy {} Challenge!' . format ( sys . argv [ 1 ], sys . argv [ 2 ]))

现在要检查这个脚本是如何工作的,我在命令行中写了:

python script.py Asabeneh 30DaysOfPython

结果:

欢迎,享受 30DayOfPython 挑战! 

一些有用的 sys 命令:

# 退出 sys 
sys。exit ()
 # 要知道最大的整数变量需要
sys。maxsize 
# 要知道环境路径
sys . path 
# 要知道您使用的 python 版本
sys。版本

统计模块

统计模块提供数值数据的数理统计功能。此模块中定义的流行统计函数:mean、median、mode、stdev等。

from  statistics  import  *  # 导入所有统计模块
age  = [ 20 , 20 , 4 , 24 , 25 , 22 , 26 , 20 , 23 , 22 , 26 ]
 print ( mean ( ages ))        # ~22.9 
print ( median ( ages) ))      # 23
打印(模式(年龄))        # 20
打印(stdev(年龄))       #~2.3

数学模块

包含许多数学运算和常数的模块。

进口 数学
打印(数学。PI)            #3.141592653589793,PI常数
打印(数学。SQRT(2))       #1.4142135623730951,平方根
打印(数学。POW(23))     #8.0,指数函数
打印(数学。地板(9.81))   #9,四舍五入到最低
打印(数学。小区(9.81))   # 10,四舍五入到最高
打印( math . log10 ( 100 ))    # 2,以10为底的对数

现在,我们已经导入了math模块,其中包含许多可以帮助我们进行数学计算的功能。要检查模块具有哪些功能,我们可以使用help(math)或dir(math)。这将显示模块中的可用功能。如果我们只想从模块中导入一个特定的函数,我们按如下方式导入它:

从 数学 导入 pi
打印( pi )

也可以一次导入多个函数

从 数学 进口 PI,SQRT,POW,地板,小区,日志10
打印(PI)                  #3.141592653589793
打印(SQRT(2))             #1.4142135623730951
打印(POW(23))           #8.0
打印(地板(9.81))         #9
打印(上限( 9.81 ))10
打印(数学。LOG10(100))     #2

但是如果我们想导入 math 模块中的所有函数,我们可以使用 * 。

from  math  import  * 
print ( pi )                   # 3.141592653589793, pi 常数
打印( sqrt ( 2 ))              # 1.4142135623730951, 平方根
打印( pow ( 2 , 3 ))            # 8.0, 指数
打印( floor ( 9.81 )         四舍五入)最低的
打印( ceil ( 9.81 ))           # 10,四舍五入到最高的
打印( math .log10 ( 100 ))      # 2

当我们导入时,我们还可以重命名函数的名称。

from  math  import  pi  as   PI 
print ( PI ) # 3.141592653589793

字符串模块

字符串模块是一个用于多种用途的有用模块。下面的示例显示了 string 模块的一些用法。

进口 字符串
打印(串。ascii_letters)#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
打印(串。位数)         #0123456789
打印(串。标点符号)    #“#$%&'()* +-/?:; <=> @ [\] ^_`{
   |}~

随机模块

到目前为止,您已经熟悉了导入模块。让我们再做一个导入来熟悉它。让我们导入random模块,它给我们一个 0 到 0.9999 之间的随机数… random模块有很多功能,但在本节中我们将只使用random和randint。

from  random  import  random , randint 
print ( random ())    # 不带任何参数;它返回一个介于 0 和 0.9999 之间的值
print ( randint ( 5 , 20 )) # 它返回一个介于 [5, 20] 之间的随机整数

你要走得很远。继续!您刚刚完成了第 12 天的挑战,距离通往伟大之路还有 12 步。

第 13 天 - 列表理解

Python 中的列表推导式是一种从序列创建列表的紧凑方式。这是创建新列表的一种快捷方式。列表理解比使用for循环处理列表快得多。

# 语法
[ i  for  i  in  iterable  if  expression ]

示例:1

例如,如果您想将字符串更改为字符列表。您可以使用几种方法。让我们看看其中的一些:

# 一种方式
language  =  'Python' 
lst  =  list ( language ) # 将字符串改为列表
print ( type ( lst ))      # list 
print ( lst )            # ['P', 'y', 't', 'h' , '在']

# 第二种方式:list comprehension 
lst  = [ i  for  i  in  language ]
 print ( type ( lst )) # list 
print ( lst )        # ['P', 'y', 't', 'h', 'o', 'n']

示例:2

例如,如果你想生成一个数字列表

# 生成数字
numbers  = [ i  for  i  in  range ( 11 )]   # 生成从 0 到 10 的
数字print ( numbers )                     # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]

# 可以在迭代期间进行数学运算
squares  = [ i  *  i  for  i  in  range ( 11 )]
 print ( squares )                     # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 也可以创建一个元组列表
numbers  = [( i , i  *  i ) for  i  in  range ( 11 )]
 print ( numbers )                              # [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]

示例:2

列表推导式可以与 if 表达式结合使用

# 生成偶数
even_numbers  = [ i  for  i  in  range ( 21 ) if  i  %  2  ==  0 ]   # 生成 0 到 21 范围内的偶数列表
print ( even_numbers )                     # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

# 生成奇数
odd_numbers  = [ i  for  i  in  range ( 21 ) if  i  %  2  !=  0 ]   # 生成0到21范围内的奇数
print ( odd_numbers )                       # [1, 3, 5, 7, 9, 11 , 13, 15, 17, 19] 
# 过滤数字:让我们从下面的列表中过滤掉正偶数
numbers  = [ - 8 , - 7 , - 3 , - 1 , 0 ,1 , 3 , 4 , 5 , 7 , 6 
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值