2015-04-21 2 views
-5

Я пытаюсь использовать strip(), чтобы обрезать пространство до и после строки. Он отлично работает дляPython strip() не работает внутри функции

str1 = " abdced " 
str1.strip() 

Однако, когда я использую его внутри функции, она не работает:

def func(str1): 
    return str1.strip() 

print func(" abdwe ") 

Он не будет обрезать любое пространство. Кто-нибудь может сказать, что происходит? Благодаря!

+2

Не должно ли оно работать на второе, а не на первое? –

+2

'def func (str1): return str1.strip()' 'assert func (" abcd ") ==" abcd "' - не воспроизводится. –

+1

Основное правило строк Python - вы не можете их изменять, вы можете создавать только новые (они неизменяемы *) – cdarke

ответ

5

strip не является методом на месте, то есть он возвращает значение, которое должно быть переназначены как так:

str1 = str1.strip() # the string is reassigned to the returned stripped string 
0

Три вещи, которые я вижу.

Во-первых, вы не назначаете переменную полосы на что-либо, во-вторых, вы пытаетесь сделать это в обратном.

Возврат должен иметь только переменные, которые вы хотите вернуть, чтобы использоваться в другой функции. Вы можете распечатать эту функцию, но ваш оператор возврата не должен иметь никакой активности, а только возвращаемую переменную.

В-третьих, это заявление печати выглядит для меня. По крайней мере, я не буду делать печать.

def func(str1): 
    str1 = " abdced " 

    str2 = str1.strip() 

    print(str2) 

    return str1, str2